我有以下XMLXSL屬性的命名空間
<?xml version="1.0" encoding="UTF-8"?>
<content>
<artwork classification="12" href="1.jpg"/>
<artwork classification="10" href="2.jpg"/>
</content>
當應用XSL
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xlink="http://www.w3.org/1999/xlink"
>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@href">
<xsl:attribute name="xlink:href">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>
它產生
<?xml version="1.0" encoding="UTF-8"?>
<content>
<artwork classification="12" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="1.jpg"/>
<artwork classification="10" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="2.jpg"/>
</content>
,而我需要
<?xml version="1.0" encoding="UTF-8"?>
<content xmlns:xlink="http://www.w3.org/1999/xlink">
<artwork classification="12" xlink:href="1.jpg"/>
<artwork classification="10" xlink:href="2.jpg"/>
</content>
我應該如何修改我的xsl以獲得我需要的結果?
我使用xalan XSLT處理器。
正如註釋:*嚴格說*你展示的這兩個XML文檔是等價的。如果「需要」表示「消費者未能正確解析文檔#1並且解析#2就好」,那麼消費者就會被破壞並應該被修復。不過,生產#2絕對是更清潔。 – 2011-05-31 07:53:11
其實這兩個文件是不相同的;如果收件人處理它們的方式不同,它們的設計會非常糟糕,但根據Canonical XML規則它們不是典型的等價物,所以這樣的應用程序實際上並沒有被破壞。 – 2011-05-31 09:38:00
它們可能不是經典等價的,但它們在語義上是等價的。下游應用不應以不同的方式處理它們。 – 2012-07-20 12:22:40