错误:尚未声明命名空间前缀“og:image”:XSLT

时间:2016-08-18 17:01:05

标签: xml xslt

我正在尝试使用XSLT将XML文件转换为另一个XML文件。 这是我的XML(Input.xml)

的一部分
    ...
<extension>
    <og:image>http://www.example.com/images/logos/logo-example-PNG.png</og:image>
    <og:type>article</og:type>
</extension>
    .......
...

这是我在标签og:image:

上使用的XSLT的一部分
....
<MT>
<xsl:attribute name="N">og:image</xsl:attribute>
<xsl:attribute name="V" select="/extension/og:image"/>
</MT>
...

我希望我的输出看起来像这样(Output.xml)

<MT N="og:image" V="http://www.example.com/images/logos/logo-example-PNG.png/>

但是当我运行我的XSLT时,我收到了这个错误。

XPST0081: Namespace prefix 'og' has not been declared

我可能会遗漏一些东西。我之前没有使用XSLT,XML之间有冒号。任何帮助将不胜感激

1 个答案:

答案 0 :(得分:2)

如果在路径表达式或模式中使用名称空间前缀,如

select="/extension/og:image"

然后你必须在某个包含元素的名称空间声明中声明前缀,例如

<xsl:stylesheet ....
  xmlns:og="xxxxxxx"

其中xxxxxxx匹配源文档中使用的命名空间URI(您尚未显示)。请注意,源文档和样式表可以使用不同的前缀,唯一重要的是它们绑定到相同的名称空间URI。