1
儘管將XHTML轉換爲XHTML和XSL我有一個命名空間問題。作爲示例考慮輸入:XHTML的XSL轉換中的命名空間問題
<!DOCTYPE html SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>Test</title></head>
<body>
<p>Remove this</p>
</body>
</html>
那麼下面轉型不工作(如不刪除<p />
):
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@*|node()" name="copy">
<xsl:copy><xsl:apply-templates select="@*|node()" /></xsl:copy>
</xsl:template>
<xsl:template match="p" />
</xsl:stylesheet>
但是這一個作用:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<xsl:template match="@*|node()" name="copy">
<xsl:copy><xsl:apply-templates select="@*|node()" /></xsl:copy>
</xsl:template>
<xsl:template match="xhtml:p" />
</xsl:stylesheet>
我的問題問題是:如何更改XSLT以便我不必爲所有XHTML元素添加前綴,並且仍然可以匹配它們?從我到目前爲止的嘗試中,添加一個默認名稱空間(如<xsl:stylesheet xmlns="http://www.w3.org/1999/xhtml" />
)無法實現此目的。
感謝您的幫助!
謝謝您的建議!我會遵循它。你的解決方案也適用,但我想我應該加入我的問題,我正在尋找比使用前綴更短,更方便的方法。 :-) – hielsnoppe
@hielsnoppe,不客氣。使用前綴是最短和最可讀的解決方案。 –