我的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