如何使用XSL操纵包含XML的变量



我对包含XML的XSL变量有要求。

<xsl:variable name="file" select="document('abc.xml')"/>

abc.xml不过是一些示例xml <a>1<b>2</b>3</a>

现在,我必须修改/添加变量$文件的元素并将结果分配给另一个变量。

我的输入将是

<Service name="CBI" detailedLog="false">
    <PolicyRules type="default">
        <EndPoints>
            <EndPoint source="Src" target="ET" serviceoperation="AV01">
                <Url>http://firstbackend.com</Url>
            </EndPoint>
            <EndPoint source="Src" target="ET" serviceoperation="PV01">
                <Url>http://secondbackend</Url>
            </EndPoint>
        </EndPoints>
    </PolicyRules>
</Service>

我必须和$ file一起获取标签..我需要以下输出。

<a>1<b>2</b>
<Url>http://firstbackend.com</Url>
<Url>http://secondbackend</Url>
3</a>

任何人都可以帮我

将主输入文档存储到全局变量中,例如

<xsl:variable name="main-doc" select="/"/>

然后为要转换的元素写一个模板,例如

<xsl:template match="a">
  <xsl:copy>
    <xsl:copy-of select="b | b/preceding-sibling::node()"/>
    <xsl:copy-of select="$main-doc//Url"/>
    <xsl:copy-of select="b/following-sibling::node()"/>
  </xsl:copy>
</xsl:template>

然后应用模板并存储在变量(如果需要的话)中,例如

<xsl:variable name="rtf1">
  <xsl:apply-templates select="$file/node()"/>
</xsl:variable>

然后使用该变量输出结果,例如

  <xsl:template match="/">
    <xsl:copy-of select="$rtf1"/>
  </xsl:template>

相关内容

  • 没有找到相关文章

最新更新