是否可以将xsd名称空间转换为结果中不同的名称?
xsl:stylesheet元素的输入命名空间如下所示:
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
并且输出根元素的输出命名空间应如下所示:
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
我尝试手动将第二个命名空间分配给输出的根元素,然后XSLT转换不再识别前缀为“xsd”的元素,因为它似乎覆盖了原始命名空间。
更改前缀并创建别名也不是一个选项:在输出(RDF / XML)中,元素的前缀应称为“xsd”。
感谢您的帮助。
编辑:
这两个文件的相关部分是:
输入文件(XSD):
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
应该成为
输出文件(RDF / XML):
<rdf:RDF xmlns:xsd="http://www.w3.org/2001/XMLSchema#">
答案 0 :(得分:1)
如果要将名称空间http://www.w3.org/2001/XMLSchema
中的所有元素转换为名称空间http://www.w3.org/2001/XMLSchema#
,请使用
<xsl:template match="xsd:*">
<xsl:element name="{name()}" namespace="http://www.w3.org/2001/XMLSchema#">
<xsl:apply-templates select="@* | node()"/>
</xsl:element>
</xsl:template>
如果这没有用,那么请向我们展示您拥有的输入XML示例以及您要创建的相应输出示例。
答案 1 :(得分:0)
解答:
花了我几个小时,但最终我找到了自己的解决方案:
我首先必须从结果文件中排除样式表的前缀:
<xsl:stylesheet version="2.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xsd">
然后我为输出的根元素创建了一个新的XSD名称空间:
<xsl:namespace name="xsd" select="'http://www.w3.org/2001/XMLSchema#'"/>
无论如何,谢谢你的帮助。