我的XML结构是这样如何使用xsl从多个具有相同名称的节点创建一个节点?
<Client>
<Document>
<service class="ABC">
<author name="x"/>
<Details>
...
</Details>
</service>
</Document>
<Document>
<service class="ABC">
<author name="x"/>
<Details>
...
</Details>
</service>
</Document>
<Document>
<service class="ABC">
<author name="x"/>
<Details>
...
</Details>
</service>
</Document>'
</Client>
我希望它像
<Client>
<Document>
<service class="ABC">
<author name="x"/>
<Details>
...
</Details>
</service>
</Document>
<Document>
<service class="ABC">
<author name="x"/>
<Details>
...
</Details>
</service>
</Document>
<Document>
<service class="ABC">
<author name="x"/>
<Details>
...
</Details>
</service>
</Document>'
<component>
<service class="ABC">
<author name="x"/>
</service>
</component>'
</Client>
我的XSL文件包含
<xsl:template match="//v3:Client">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
<component>
<service class="">
<xsl:apply-templates select="//v3:Client/v3:Document/v3:service/v3:author"/>
</service>
</component>
</xsl:copy>
</xsl:template>
<xsl:template match="//v3:Client/v3:component/v3:service">
<xsl:element name="service" namespace="urn:hl7-org:v3">
<xsl:attribute name="class">
<xsl:value-of select="//v3:Client/v3:Document/v3:service/@class"/>
</xsl:attribute>
</xsl:element>
</xsl:template>
但它不会给所需的输出。它的输出像
Client Document service class="ABC" author name="x" details ... details service Document Document service class="ABC" author name="x" details ... details service Document Document service class="ABC" author name="x" details ... details service Document component service class="" author name="x" service service class="" author name="x" service service class="" author name="x" service component Client
我是新来的xsl。任何人都可以帮我解决这个问题吗?
谢谢你的回复。 这里问题是所有的服务节点都有相同的类值。 – learner 2013-03-27 06:15:01
您可以编辑您的问题以显示服务节点具有不同类值的示例吗?谢谢! – 2013-03-27 08:22:18
只是一个小的变化,它的工作。 非常感谢。所有的答案都很有帮助,但这个解决方案最合适。 谢谢大家。 – learner 2013-03-27 08:58:16