是否可以使用XPath仅选择具有特定子元素的节点?例如,从这个XML我只想要宠物中有'bar'子元素的元素.因此,结果数据集将包含此示例中的lizard和pig元素:
<pets>
<cat>
<foo>don't care about this</foo>
</cat>
<dog>
<foo>not this one either</foo>
</dog>
<lizard>
<bar>lizard should be returned, because it has a child of bar</bar>
</lizard>
<pig>
<bar>return pig, too</bar>
</pig>
</pets>
Run Code Online (Sandbox Code Playgroud)
这个Xpath给了我所有的宠物:"/pets/*",但我只想要有一个名字的子节点的宠物'bar'.
如何设置一个href,它既是链接,也有通过XSLT转换的链接文本?这是我到目前为止所做的,它给出了错误"xsl:value-of不能是xsl:text元素的子元素":
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:value-of select="actionUrl"/>
</xsl:attribute>
<xsl:text><xsl:value-of select="actionUrl"/></xsl:text>
</xsl:element>
Run Code Online (Sandbox Code Playgroud) 我很难绕过XSLT,但我听说可以将XML文件拆分成多个文件.基本上我想将所有元素复制到第一个文件和最后一个文件之后,然后为每个输出文件添加单个文件内容.
如果有可能,有人可以给我一些指示吗?
谢谢,
complete.xml
<rootelem>
<elem>
<file attr1='1'>
<content>content file 1</content>
</file>
<file attr2='2'>
<content>content file 2</content>
</file>
<file attr3='3'>
<content>content file 3</content>
</file>
</elem>
</rootelem>
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
complete_PART1.xml
<rootelem>
<elem>
<file attr1='1'>
<content>content file 1</content>
</file>
</elem>
</rootelem>
Run Code Online (Sandbox Code Playgroud)
complete_PART2.xml
<rootelem>
<elem>
<file attr2='2'>
<content>content file 2</content>
</file>
</elem>
</rootelem>
Run Code Online (Sandbox Code Playgroud)
complete_PART3.xml
<rootelem>
<elem>
<file attr3='3'>
<content>content file 3</content>
</file>
</elem>
</rootelem>
Run Code Online (Sandbox Code Playgroud) 我正在尝试从数据库中提取一个值并将其除以12并显示该数字,但我似乎无法正确使用它.这是我到目前为止显示的值:
$<xsl:value-of select="format-number(number(//Applications/AveAnnualVolume),'###,###,##0.00')"/>
Run Code Online (Sandbox Code Playgroud)
那部分有效,但我无法弄清楚如何将它除以12而是显示出来.
在XSLT处理中,apply-template和call-template之间是否存在性能差异?在我的样式表中有很多我可以使用的实例,这是最好的选择吗?
我有一个Java servlet,它生成xml,用xslt样式表进行翻译,然后显示生成的HTML.这是我第一次使用xslt.调试xslt的好方法是什么?我有(或可以得到)一些示例XML文件来应用转换.但我真的不确定语法,所以给我语法警告的东西会很棒.
我想将分号(;)上的地址拆分为由<br />以下各项分隔的行:
例如if address= 123 Elm Street,我想输出123 Elm Street,
但如果address= 123 Elm Street;PO Box 222,我想输出
123 Elm Street<br />PO Box 222
Run Code Online (Sandbox Code Playgroud)
如果address= 123 Elm Street;PO Box 222;c/o James Jones,我想输出
123 Elm Street<br />PO Box 222<br />c/o James Jones
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?(可能很简单,但我不熟悉XSLT)
普通的XSL选择器是
<xsl:value-of select="address"/>
Run Code Online (Sandbox Code Playgroud)
我想修改这个XSLT片段以分号分割.
更新:显然,答案涉及使用<xsl:call-template>和功能substring-before()和substring-after().
但我是XSLT的初学者,我真的可以使用一些帮助来解决这个问题.
这是一个简单的问题,但我无法找到答案.我有一个XSLT 2.0样式表,我正在尝试用Java处理.它依赖于Saxon的XSL元素.
我当前的类在使用简单的XSLT 1.0时运行良好,但是我使用使用Saxon构建的2.0 XSLT会收到有关无法识别的元素的错误.
我无法弄清楚如何告诉Java使用Saxon作为处理器.我在班上使用javax.xml.transform.这是我可以设置的属性吗?我该怎么做呢?谢谢!
编辑 我想出如何设置属性使用Saxon,但现在我收到此错误.
Provider net.sf.saxon.TransformerFactoryImpl not found
Run Code Online (Sandbox Code Playgroud)
如何在我的应用程序中包含Saxon?
Safari浏览器不支持XSLT 2.0文档.
哪些浏览器(如果有)支持XSLT 2.0?