0
我想將對模式(2)進行驗證的XML實例轉換爲針對舊模式(1)進行驗證的實例。XSLT輸出具有與輸入相同的名稱空間但名稱空間前綴相同
2個模式使用不同的名稱空間URI,但爲這些URI共享相同的元素名稱前綴。
是唯一的解決方法只是在變換之前更改輸入中使用的命名空間前綴?或者它可以內置到XSLT中?
我想將對模式(2)進行驗證的XML實例轉換爲針對舊模式(1)進行驗證的實例。XSLT輸出具有與輸入相同的名稱空間但名稱空間前綴相同
2個模式使用不同的名稱空間URI,但爲這些URI共享相同的元素名稱前綴。
是唯一的解決方法只是在變換之前更改輸入中使用的命名空間前綴?或者它可以內置到XSLT中?
是唯一的解決方法只是在變換之前更改 輸入中使用的命名空間前綴?
不,解決方案是在樣式表中爲源XML命名空間使用不同的前綴。這裏有一個小例子:
XML
<abc:root xmlns:abc="www.example.com/source"/>
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:src="www.example.com/source"
xmlns:abc="www.example.com/target"
exclude-result-prefixes="src">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="src:*">
<xsl:element name="abc:{local-name()}">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
結果
<?xml version="1.0" encoding="UTF-8"?>
<abc:root xmlns:abc="www.example.com/target"/>
這是我發佈後2分鐘的工作假設。一旦我完成了基於此的完成的XSLT,我將結束這個問題。 – Michael
架構不定義任何前綴,他們定義目標名稱空間。 –
是的,的確如此。我正在假設可以分配一個工作前綴在XSLT中使用,並且期望它能識別實例中找到的** URI **,而不管實例使用什麼作爲前綴? – Michael
我需要轉換的實例將使用在模式中定義爲方便的前綴,並且(1)和(2)對於2個不同的URI使用相同的前綴。 – Michael