如何通过XML文件中的命名空间URL获取名称空间前缀?

时间:2013-07-11 11:58:21

标签: xml xslt

我需要通过名称空间URL和xslt转换来获取名称空间前缀。例如,如果我有东西

`xmlns:com="http://system-services.test/ServiceManagement/OIS_Services_v01.00/common"`

我通过了http://system-services.test/ServiceManagement/OIS_Services_v01.00/common,我在xsl文件中获得了com

编辑。例如:我有这个xsl:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:wor="http://test/ServAndResMgmt/TechOrderMgmt/WorkorderProvider_v01.00" xmlns:typ="http://test/ServAndResMgmt/TechOrderMgmt/WorkorderProvider_v01.00/types"
    xmlns:csdg="http://schemas.telekom.net/csdg_v01.01" xmlns:typ1="http://test/ServiceManagement/TechnicalOrderManagement/Workorder_v01.00/types"
    xmlns:com="http://test/ServiceManagement/OIS_Services_v01.00/common">

    <xsl:output indent="yes" method="xml" encoding="utf-8"/>

    <xsl:variable name="var">
        <xsl:text>com</xsl:text>
    </xsl:variable>

    <xsl:template match="/">
        <CreateWorkorder>

            <xsl:element name="{$var}:rr">
                <xsl:value-of select="//*:ticketTaskID/*:value"/>
            </xsl:element>
        </CreateWorkorder>
    </xsl:template>

</xsl:stylesheet>

现在,是否允许我在变量&#34; var&#34;中保存名称空间前缀的任何函数?

1 个答案:

答案 0 :(得分:1)

使用XPath表达式:

namespace::*[. = 'http://.../OIS_Services_v01.00/common']/name()

上下文节点是此命名空间在其范围内的元素。