输入xml
<catalog>
<product id="1">
<name>abc</name>
<category>aaa</category>
<category>bbb</category>
<category>ccc</category>
</product>
<product id="2">
<name>cde</name>
<category>aaa</category>
<category>bbb</category>
</product>
</catalog>
<products>
<product>
<id>1</id>
<name>abc</name>
<category>aaa,bbb,ccc</category>
</product>
<product>
<id>2</id>
<name>cde</name>
<category>aaa,bbb</category>
</product>
</products>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/catalog">
<products>
<xsl:for-each select="product">
<product>
<id><xsl:value-of select="@id"/></id>
<name><xsl:value-of select="name"/></name>
<category><xsl:value-of select="category" /></category>
</product>
</xsl:for-each>
</products>
</xsl:template>
</xsl:stylesheet>
<products>
<product>
<id>1</id>
<name>abc</name>
<category>aaa</category>
</product>
<product>
<id>2</id>
<name>cde</name>
<category>aaa</category>
</product>
</products>
使用这里定义的这个方便的join调用模板,这将变得非常简单:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/catalog">
<products>
<xsl:for-each select="product">
<product>
<id>
<xsl:value-of select="@id"/>
</id>
<name>
<xsl:value-of select="name"/>
</name>
<category>
<xsl:call-template name="join">
<xsl:with-param name="list" select="category" />
<xsl:with-param name="separator" select="','" />
</xsl:call-template>
</category>
</product>
</xsl:for-each>
</products>
</xsl:template>
<xsl:template name="join">
<xsl:param name="list" />
<xsl:param name="separator"/>
<xsl:for-each select="$list">
<xsl:value-of select="." />
<xsl:if test="position() != last()">
<xsl:value-of select="$separator" />
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
输出:
<products>
<product>
<id>1</id>
<name>abc</name>
<category>aaa,bbb,ccc</category>
</product>
<product>
<id>2</id>
<name>cde</name>
<category>aaa,bbb</category>
</product>
</products>
不具有任何3个属性值(TargetInteresting1、TargetInteresting2、TargetInteresting3)的节点应不加修改地复制到最终结果中。 我正在寻找一个使用XSLT2.0的解决方案。我不知道从何说起,我还不太习惯xslt:-(
我很难使用下面的用例。 以下是XML: 我想要实现的是基于节点
我的XML 我所拥有的。。 //移动到父节点以遍历其余项} 我想要的是到达“cd”节点。 在一些示例中,我看到了VTDNav。下一个_子节点似乎不可用。有人能建议如何到达我需要的节点吗?目前,我正在设法通过到达第一个_子节点,然后移动到下一个兄弟节点来实现这一点 谢谢你的帮助 当做
我被卡住了,当我试图联系两个元素节点,我认为是相同的一个...我完成了匹配那些状态节点...需要帮助连接!!
我想用XSLT转换XML文档。按名称和属性匹配的节点及其子节点应嵌套/移动到新节点中。 从转变 到 但是我的XSLT工作不好。您有什么提示吗,XSLT文件有什么问题? 非常感谢你 安德烈亚斯 我的XSLT 输出: 我的源XML文件 我希望在转换后的输出中将v:data节点及其子节点嵌套到一个新节点中。但只有属性名为“Custon”的v:data节点。转换后的XML文档应该如下所示 如果我从XSLT
以下是我的XML文件: 我需要知道如何将标记中的所有值追加到中。 如下所示: 公共静态void main(String[]args)引发ParserConfigurationException、SAXException、IOException、XPathExpressionException{ } 大客户买主 我有一个解决办法: