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