xml - XSLT 如何在模板内的元素中添加命名空间前缀

标签 xml xslt namespaces

我正在使用 xslt 将 XML 转换为另一个 XML,我有所有标签的 namespace 前缀,例如“ns9”。在某些地方,我正在调用模板来生成其中的元素,但我缺少命名空间前缀。我试图在模板中添加命名空间,但它没有反射(reflect)。

 <xsl:call-template name="split">
     <xsl:with-param name="list" select="FlightReferences"/>
     <xsl:with-param name="delimiter" select="' '"/>
   <xsl:with-param name="tag" select="'PaxJourneyRefID'"/>
</xsl:call-template>

响应如下,因为缺少标记 PaxJourneyRefID 命名空间前缀。
 <ns9:OriginDest>
   <ns9:DestCode>DXB</ns9:DestCode>
   <ns9:OriginCode>LHR</ns9:OriginCode>
   <ns9:OriginDestID>LHRDXB</ns9:OriginDestID>
  <PaxJourneyRefID>Flight1</PaxJourneyRefID>
</ns9:OriginDest>

尝试在模板声明中添加 namespace ,
<xsl:template name="split">
<xsl:param name="list"/>
<xsl:param name="delimiter"/>
<xsl:param name="tag"/>
<xsl:choose>
    <xsl:when test="contains($list, $delimiter)">
        <xsl:element name="{$tag}" xmlns:ns9="http://www.example.com/IATA/2015/00/2018.2/Sample" >
            <xsl:value-of select="substring-before($list,$delimiter)"/>
        </xsl:element>
        <xsl:call-template name="split">
            <xsl:with-param name="list" select="substring-after($list,$delimiter)"/>
            <xsl:with-param name="delimiter" select="$delimiter"/>
            <xsl:with-param name="tag" select="$tag"/>
        </xsl:call-template>
    </xsl:when>
    <xsl:otherwise>
        <xsl:choose>
            <xsl:when test="$list = ''">
                <xsl:text/>
            </xsl:when>
            <xsl:otherwise>
                <xsl:element name="{$tag}">
                    <xsl:value-of select="$list"/>
                </xsl:element>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:otherwise>
</xsl:choose>

最佳答案

您可以在 xsl:element name 中使用前缀例如<xsl:element name="ns9:{$tag}"> .

关于xml - XSLT 如何在模板内的元素中添加命名空间前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62357433/

相关文章:

SharePoint 内容查询、分类术语库和 XSL 转换

c++ - 如何在宏中获取当前命名空间的字符串

java - 为什么 JAX-WS 导出的对象需要默认构造函数?

php - 解析xml并在mysql表中插入数据

xml - 如何检查 XMLList 在 Flex 中是否为空

xml - XSLT 识别没有属性的 XML 标签元素

java - 将 xml 导入到 Android Studio 文本

css - 从数据库中检索数据并将它们显示在表格中后,长行会扩展单元格,而不是中断

javascript - 为什么 $.namespace() 仍然不是核心 jQuery 实现的一部分?

namespaces - clojure 关键字什么时候应该出现在命名空间中?