获取元素名称并打印出来

时间:2019-07-17 07:50:38

标签: xml xslt xslt-1.0 xslt-2.0

我有一个包含元素和元素名称的XML文件。

我想将元素名称转换为元素,并用输入元素的匹配内容填充这些元素。

问题的关键是我会动态尝试。静态的整个过程我已经拥有后端的过程是动态的。假设输入是动态的。

输入示例:

<Parameter name="customer">customer</Parameter>
<Parameter name="Date">Date</Parameter>
<Parameter name="Budgetnumber">Budgetnumber</Parameter>
<Parameter name="External">External</Parameter>
<Parameter name="Target">Target</Parameter>
<Parameter name="Worker">Worker</Parameter>
<Parameter name="customer_number">1234567890</Parameter>
<Parameter name="DataPath">Data/Path/</Parameter>
<Parameter name="DUMMY">DUMMY</Parameter>
<Parameter name="FileName">File.Name</Parameter>
<Parameter name="document_number">123123</Parameter>

我的“不良” XSLT映射:

<parameter>
    <xsl:for-each select="./*/Parameter">
        <xsl:value-of select="local-name(.)"/> : <xsl:value-of select="."/>
    </xsl:for-each> 
</parameter>

我不是XSLT中的佼佼者,所以我希望有人可以帮助我获得以下示例输出:

<parameter>
   <customer>customer</customer>
   <Date>Date</Date>
   <Budgetnumber>Budgetnumber</Budgetnumber>
   <External>External</External>
   <Target>Target</Target>
   <Worker>Worker</Worker>
   <customer_number>1234567890</customer_number>
   <DataPath>Data/Path/</DataPath>
   <DUMMY>DUMMY</DUMMY>
   <FileName>File.Name</FileName>
   <document_number>123123</document_number>
</parameter>

2 个答案:

答案 0 :(得分:1)

这是构建xslt的方法。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes"/>   

    <xsl:template match="/">
      <parameter>
        <xsl:for-each select="Parameter">           
            <xsl:element name="{@name}">
                <xsl:value-of select="text()" />
            </xsl:element>
        </xsl:for-each>
      </parameter>
    </xsl:template>    
</xsl:stylesheet>

答案 1 :(得分:1)

您可以尝试:-

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>   

<xsl:template match="/">
    <Parameter>
<xsl:apply-templates/>
    </Parameter>
</xsl:template>

<xsl:template match="*[@name]">
    <xsl:element name="{@name}">
        <xsl:apply-templates/>
    </xsl:element>
</xsl:template>
</xsl:stylesheet>
相关问题