您好我跟随XML作为我的xsl的输入,是否有任何在线工具也可以这样做。
<?xml version="1.0" encoding="UTF-8"?>
<Parent att1="2012-11-30"
att2="Y" att3="11404262" att4="1032">
<Child1 att1="0"/>
<Child2>
<Child3 CodeShort="1032" CodeType="NODE" CodeValue="Rohith"/>
<Child3 CodeShort="1032" CodeType="NODE" CodeValue="Sachin"/>
<Child3 CodeShort="1032" CodeType="NODE" CodeValue="Rahul"/>
</Child2>
</Parent>
我需要遍历child3次并且只复制那么多次的Parent标签,并且每次我的外观看起来都会用Child3 CodeValue替换父级的att4,在转换xml时遇到问题
<?xml version="1.0" encoding="UTF-8"?>
<multiApi>
<Parent att1="2012-11-30" att2="Y" att3="11404262" att4="Rohith" ></Parent>
<Parent att1="2012-11-30" att2="Y" att3="11404262" att4="Sachin" ></Parent>
<Parent att1="2012-11-30" att2="Y" att3="11404262" att4="Rahul" ></Parent>
</multiApi>
请告诉我们我需要使用的xsl,如果有任何在线工具可以帮助我。
我需要迭代child3次并且只复制很多次的Parent标记,并且每次都用Child3 CodeValue替换parent的att4
编辑:我们尝试无法通过具体解决方案获得的xsl
<xsl:stylesheet xmlns:xsl="w3.org/1999/XSL/Transform" version="1.0">
<xsl:output indent="yes" />
<xsl:template match="/">
<mutiApi>
<xsl:for-each select="parent/child2/child3">
<xsl:copy-of select="/parent" />
<xsl:attribute name="Node">
<xsl:value-of select="./@CodeValue" />
</xsl:attribute>
</xsl:for-each>
</mutiApi>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:0)
您可以创建<Parent>
节点并迭代它的属性,而不是尝试复制<Parent>
节点及其属性。对于属性att4
,您可以有条件地检查它的名称,并将该值替换为@CodeValue
的值。
以下是可以帮助提供所需输出的XSLT。
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes" />
<xsl:strip-space elements="*"/>
<xsl:template match="Child2">
<multiApi>
<xsl:for-each select="Child3">
<xsl:variable name="codeVal" select="@CodeValue" />
<Parent>
<xsl:for-each select="/Parent/@*">
<xsl:attribute name="{local-name(.)}">
<xsl:choose>
<xsl:when test="local-name(.) = 'att4'">
<xsl:value-of select="$codeVal" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="." />
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:for-each>
</Parent>
</xsl:for-each>
</multiApi>
</xsl:template>
</xsl:stylesheet>
输出
<multiApi>
<Parent att1="2012-11-30" att2="Y" att3="11404262" att4="Rohith" />
<Parent att1="2012-11-30" att2="Y" att3="11404262" att4="Sachin" />
<Parent att1="2012-11-30" att2="Y" att3="11404262" att4="Rahul" />
</multiApi>