需要xslt映射的帮助。 假设来源如下。
<A>
<B>
<C>Test1</C>
<D></D>
</B>
<B>
<C>Test2</C>
<D></D>
</B>
</A>
在元素B无界的情况下,让我的目标xsd如下所示。
<X>
<Y></Y>
</X>
我想在Y元素中映射C元素的所有值。
<X><Y>Test1,Test2</Y></X>
我如何实施,需要你的帮助 此致
答案 0 :(得分:0)
您可以尝试基于您正在使用的XSLT版本的任何选项。
XSLT 1.0
在XSLT 1.0中,您需要遍历<C>
元素并连接值和,
分隔符。与XSLT 2.0相比,这个需要更多编码。
<xsl:template match="A">
<X>
<Y>
<xsl:for-each select="B/C">
<xsl:value-of select="." />
<xsl:if test="position() != last()">
<xsl:value-of select="', '" />
</xsl:if>
</xsl:for-each>
</Y>
</X>
</xsl:template>
XSLT 2.0
在XSLT 2.0中,只要您使用Saxon viz等工厂,就可以使用经过优化的方法。在Java的情况下saxon9he.jar
。
<xsl:template match="A">
<X>
<Y>
<xsl:value-of select="B/C" separator=", " />
</Y>
</X>
</xsl:template>
这两个模板都提供了所需的输出。
<X>
<Y>Test1, Test2</Y>
</X>