2017-05-04 157 views

回答

0

假設這是一個示例XML:

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <a name="attr" value="text" /> 
</root> 

然後這個樣式表將導致所需的輸出:

<?xml version="1.0" encoding="UTF-8" ?> 
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> 
    <xsl:output method="xml"/> 

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

    <xsl:template match="a"> 
     <xsl:copy> 
      <xsl:apply-templates select="@*[local-name() != 'value']"/> 
      <xsl:value-of select="@value" /> 
     </xsl:copy> 
    </xsl:template> 

</xsl:transform> 

輸出:

<?xml version="1.0" encoding="UTF-8"?><root> 
    <a name="attr">text</a> 
</root> 

默認模板只是複製遞歸。與匹配<a>元素的第二個模板。它首先應用不屬於value的屬性的模板,然後複製屬性value的文本。它必須這樣做,因爲如果屬性值出現在其他屬性之前,則開始標記已經結束以啓動其文本內容,然後其他屬性不能再被複制。

+0

非常感謝。你讓我今天一整天都感覺很好.. –