0

是否可以将 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#">
4

2 回答 2

1

如果要将命名空间中的所有元素转换为命名空间中的所有元素,http://www.w3.org/2001/XMLSchemahttp://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 示例以及您要创建的相应输出示例。

于 2013-05-29T12:22:39.990 回答
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#'"/>

无论如何,谢谢你的帮助。

于 2013-05-31T14:40:50.737 回答