2012-05-10 53 views
1

我有一個XML,在XML我有一個元素<storybody>它本身有幾個元素命名卻很少在他們,現在我要的是複製每個在<storybody>和改變<URI>標籤<storybody>與<a>。拷貝所有的XML節點,並使用XSLT

請記住我只需要在<storybody>的文檔中這樣做。

XML結構:

<mothertag> 
    <atag> 
     asdfasdfa 
    </atag> 

    <storybody> 
     <p>sometext here<URI ref="http://google.com" /> some more text</p> 
    </storybody> 
</mothertag> 

現在我想這個URI更改標籤。

+0

你可以提供你正是一個例子期待輸出是? – freefaller

回答

0

你需要一個identity transformation增加了額外的模板來匹配你想重命名的節點。就像這樣:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:strip-space elements="*" /> 
    <xsl:output indent="yes" method="html" /> 

    <xsl:template match="@* | node()"> 
     <xsl:copy> 
      <xsl:apply-templates select="@* | node()"/> 
     </xsl:copy> 
    </xsl:template> 

    <xsl:template match="URI"> 
     <TAG> 
      <xsl:apply-templates select="@* | node()"/> 
     </TAG> 
    </xsl:template> 

</xsl:stylesheet> 

當應用到(修正的結束storybody標籤錯字):

<mothertag> 
    <atag> 
     asdfasdfa 
    </atag> 

    <storybody> 
     <p>sometext here<URI ref="http://google.com" /> some more text</p> 
    </storybody> 

</mothertag> 

產地:

<mothertag> 
    <atag> 
     asdfasdfa 

    </atag> 
    <storybody> 
     <p>sometext here 
     <TAG ref="http://google.com"></TAG> some more text 
     </p> 
    </storybody> 
</mothertag> 
+0

感謝您的答案,只是在這一步,如果我有一個標籤內即我不想複製裏面的所有節點 謝謝你糾正錯字:) –

+0

@Touseef,你可以沉默不需要的標籤與空tempaltes。像這個''。順便說一句,如果答案幫助你,也請考慮upvoting它。謝謝 –