如何通过XPath筛选EN语言元素并编写XSLT生成指定表格?
解决方案
我明白你需要逐个测试每个元素来筛选出语言为EN的条目,同时生成指定的表格结构。下面是完全符合你需求的XSLT代码:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes"/> <xsl:template match="/"> <table id="123"> <tgroup cols="2"> <colspec colname="c1" colnum="1" colwidth="1.0*"/> <colspec colname="c2" colnum="2" colwidth="1.0*"/> <thead> <row> <entry>Name</entry> <entry>Values</entry> </row> </thead> <tbody> <!-- 循环遍历所有values下的子元素,逐个测试 --> <xsl:for-each select="data/item/values/*"> <!-- 检查当前元素下的language是否为EN --> <xsl:if test="language/text()='EN'"> <row> <entry> <ph><xsl:value-of select="local-name()"/></ph> </entry> <entry><xsl:value-of select="text"/></entry> </row> </xsl:if> </xsl:for-each> </tbody> </tgroup> </table> </xsl:template> </xsl:stylesheet>
关键说明:
- 用
<xsl:for-each select="data/item/values/*">遍历所有values节点下的子元素,完美实现逐个测试每个元素的要求; - 对每个元素,通过
<xsl:if test="language/text()='EN'">判断其语言是否为EN,完全贴合你后续转换步骤的限制; - 最终生成的表格结构和你给出的期望输出完全一致。
转换后的输出:
<table id="123"> <tgroup cols="2"> <colspec colname="c1" colnum="1" colwidth="1.0*"/> <colspec colname="c2" colnum="2" colwidth="1.0*"/> <thead> <row> <entry>Name</entry> <entry>Values</entry> </row> </thead> <tbody> <row> <entry> <ph>element1</ph> </entry> <entry>text</entry> </row> <row> <entry> <ph>element5</ph> </entry> <entry>description</entry> </row> </tbody> </tgroup> </table>
内容的提问来源于stack exchange,提问作者Any
相关产品推荐
相关产品推荐

