XSL创建名称中包含冒号的元素

时间:2014-06-05 07:27:12

标签: xslt

这很好用

<xsl:element name="title">
  <xsl:value-of select="@title"/>
</xsl:element>

然而,这不是

<xsl:element name="image:title">
  <xsl:value-of select="@title"/>
</xsl:element>

请有人可以提供建议吗?当我说它不起作用时,分页符。不幸的是由于系统的性质,我看不到错误

页面顶部如下所示

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:udf="http://www.virtualfestivals.com/udf">
<xsl:output method="html" omit-xml-declaration="no" />

1 个答案:

答案 0 :(得分:1)

您获得的错误可能与Undeclared namespace prefix {image}相符。 &#34;图像&#34;你的元素名称的一部分实际上是&#34;名称空间前缀&#34;,就像所有xslt元素的前缀是&#34; xsl:&#34;。

要解决此问题,您需要为&#34;图像&#34;添加声明。在XSLT中的某处添加前缀

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     xmlns:image="my:image"
     xmlns:udf="http://www.virtualfestivals.com/udf">

当然,URI是您的&#34;图像&#34;取决于您首先需要添加前缀。 (编辑:根据您的评论,您需要将其设置为http://www.google.com/schemas/sitemap-image/1.1

请注意,您实际上并不需要在此处使用 xsl:element 。如果元素名称是静态的,只需写出这样的元素......

<image:title>
   <xsl:value-of select="@title"/>
</image:title>

例如,在http://www.xml.com/pub/a/2001/04/04/trxml/读取名称空间。