我有一个 XML,如下所示。这些值都是模拟的,仅供测试之用
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<TAG1>
<placeholder>ghgh</placeholder>
<placeholder>ghg</placeholder>
<placeholder>ghgh</placeholder>
<placeholder>ghg</placeholder>
<placeholder>ghgh</placeholder>
<placeholder>ghg</placeholder>
<Information>
<InformationBody>
<Test>EE</Test>
<TestTwo>QU1RIENUVEIxICAgICAgIBI3f1QK6wEs</TestTwo>
<TestThree>20150119.141224508</TestThree>
</InformationBody>
</Information>
</TAG1>
Run Code Online (Sandbox Code Playgroud)
我需要在 InformationBody 标签后面附加一个新节点,并添加一些额外的数据,我该如何执行此操作?我是 XSLT 的新手,并提出了上述内容,但我不确定它是否在正确的轨道上。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- Identity template, copies everything as is -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<!-- Override for target element -->
<xsl:template match="TAG1">
<!-- Copy the element -->
<xsl:copy>
<!-- And everything inside it -->
<xsl:apply-templates select="@* | *"/>
<!-- Add new node -->
<xsl:element name="newNode"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
最终结果看起来像
<Information>
<InformationBody>
<Test>EE</Test>
<TestTwo>QU1RIENUVEIxICAgICAgIBI3f1QK6wEs</TestTwo>
<TestThree>20150119.141224508</TestThree>
</InformationBody>
<newTag></newTag>
</Information>
Run Code Online (Sandbox Code Playgroud)
您可以匹配该InformationBody元素,按原样复制它,然后在复制后添加一个元素。如下:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- Identity template, copies everything as is -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<!-- Override for target element -->
<xsl:template match="InformationBody">
<!-- Copy the element -->
<xsl:copy>
<!-- And everything inside it -->
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
<!-- Add new node -->
<xsl:element name="newNode"/>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
如果 后面没有元素,您的方法将起到相同的作用InformationBody。如果有,newNode将添加到 的所有子项之后TAG1。
| 归档时间: |
|
| 查看次数: |
12997 次 |
| 最近记录: |