我得到了这个XML,并且必须从中渲染相当多的内容,并且大多数都工作正常,但我在尝试提取Color
的节点集时被踩了一脚,谁的键与bar
元素的key
匹配,并且属性是硬编码的字符串(在这种情况下是'data'
)。node-set将作为参数传递给模板,并且每个颜色行只能出现一次:
<report>
<settings>
<colors>
<color key="1-1" name="frame" value="..." ... />
<color key="1-1" name="data" value="..." ... />
<color key="2-1" name="frame" value="..." ... />
<color key="2-1" name="data" value="..." ... />
<color key="3-1" name="frame" value="..." ... />
<color key="3-1" name="data" value="..." ... />
</colors>
<comp>
<cont>
<bar key="1-1" .../>
<bar key="1-1" .../>
<bar key="2-1" .../>
</cont>
<comp>
<!-- possibly more <comp/cont/bar> below that may not be mixed with the above -->
</settings>
</report>
在我的XSLT文件中,我有以下内容(摘录):
<xsl:key name="barnode" match="bar" use="@key"/>
<xsl:key name="colorlookup" match="/report/settings/colors/color" use="@key"/>
<!-- this runs at the `cont` element level, i.e. `bar` can be accessed without prefix -->
<!-- set $x to the node-list of bars with unique @key attribute -->
<xsl:call-template name="renderit">
<xsl:with-param name="colors">
<!-- 'bars' contains node-set of 'bar' elements with @key being unique -->
<xsl:variable name="bars" select="bar[generate-id() = generate-id(key('barnode', @key)[1])]"/>
<xsl:for-each select="$bars">
<xsl:value-of select="key('colorlookup', @key)[@name='data']"/>
</xsl:for-each>
</xsl:with-param>
</xsl:call-template>
问题是,这不会传递节点集,而是传递树片段。是否可以进行与上述操作相同但返回节点集的选择?
编辑:
预期节点集:
<color key="1-1" name="data" value="..." ... />
<color key="2-1" name="data" value="..." ... />
我不确定所呈现的XSLT是否会生成这个结果树片段,因为我不知道如何打印它(出于调试目的)。
试试吧
<xsl:with-param name="colors" select="key('colorlookup', bar[generate-id() = generate-id(key('barnode', @key)[1])]/@key)[@name = 'data']"/>
当前输出: 所需的输出是(将提取的内容从CDATA中取出): 我也尝试了“text()”匹配模式,但它不起作用,我阅读了不同的答案并尝试了它们的方法: 我需要使用XSLT1.0。 感谢您的帮助,并向您致意
我得到的错误:java.lang.NoSuchMEDExcture: 这是我的密码
我有一个存储过程,它接受两个输入参数,并给出一个输出参数 输入参数一个是Oracle自定义类型,第二个是字符类型 输出参数是数字类型 有人能帮我访问节点oracle节点模块的过程吗?
我有一个xslt文件,可以使用ApacheFop将xml文件转换为pdf。但是我的xslt中没有关于名称空间的所有信息。它依赖于xml。我可以用java分析xml文档,并从xml中获取所有名称空间。但我不知道如何将这个名称空间从java传递到xslt文件,以及下一步如何在
问题内容: 我正在为我的Java应用程序设计一个简单的数据访问对象。我有一些类(记录),它们代表像和中的表格中的一行。 我想有一种方法来获取特定类型的所有记录。 就目前而言,我是这样的: 但是我想有一个像这样的多态方法(错误): 使用示例: 如何用Java做到这一点? 问题答案: 既然您说不想在不同的类中使用数据访问方法(在Anish的回答中),所以我想为什么不尝试这样的方法。 编辑: 我想再添加
问题内容: 如何在不执行“父”函数或不使用函数的情况下将函数作为参数传递?(因为我已经读到它是不安全的。) 我有这个: 它可以工作,但是问题是在调用函数时触发,而不是在函数中使用时触发。 根据我所读的内容,我可以使用来解决它,但这不是最佳实践。如何在JavaScript中将函数作为参数传递? 问题答案: 您只需要删除括号: 然后,这将传递函数而不先执行它。 这是一个例子: