0

我有以下xml:

<article article-type="research-article">
<body>
<graphic xlink:href="zee9991370930006.g.eps"/>
<self-uri xlink:title="pdf" xlink:href="zee00813002857.pdf" />
</body>
</article>

我需要将其转换为:

<article article-type="research-article" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML">
<body>
<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="zee9991370930006.g.eps"/>
<self-uri xlink:title="pdf" xlink:href="zee00813002857.pdf" xmlns:xlink="http://www.w3.org/1999/xlink"/>
</body>
</article>

对于需要命名空间属性的每个元素,我在 XSLT 2.0 中使用了以下命令:

<xsl:namespace name="xlink" select="'http://www.w3.org/1999/xlink'"/>
<xsl:namespace name="mml" select="'http://www.w3.org/1998/Math/MathML'"/>

但问题是我只为一个元素获取命名空间属性,即article. 我也在 xslt 的开头声明了命名空间。无法弄清楚确切的问题是什么。任何形式的帮助将不胜感激。谢谢。

4

1 回答 1

0

XML 生成器不应该做你想做的事。他们将根据规范生成您的 XML。不建议您在所有使用它们的元素中定义相同的命名空间!这使它变得冗长,丑陋和怪异的做事方式。

如果命名空间仅在顶部(根元素)定义,会出现什么问题?您只能在需要它的元素中使用它。简单的。

OP 的评论:我需要它在根目录并且我已经声明了它。但它不适用于它下面的节点,即在我的情况下是图形和 self-uri)。您是否检查过您的 xml 格式是否正确?如果您在此处发布的是完整的 xml,那么图形和 self-uri 应该始终具有可用的命名空间。出于上述原因,您应该针对以下输出。

<article article-type="research-article" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML">
  <body>
    <graphic xlink:href="zee9991370930006.g.eps"/>
    <self-uri xlink:title="pdf" xlink:href="zee00813002857.pdf"/>
  </body>
</article>
于 2013-10-04T07:21:47.340 回答