使用xslt将元素添加到特定的xpath

时间:2015-05-22 01:35:29

标签: xml xslt xpath

我想实现以下目标。

这是一个示例XML:

<?xml version="1.0" encoding="iso-8859-1"?>
<database>
    <rad>
        <timeout> 45 </timeout>
    </rad>
    <tac>
        <timeout> 70 </timeout>
    </tac>    
</database>

1)使用XSLT我想检查/ database / rad / timeout值是否大于30(在本例中为45),将其更改为30.

2)按如下方式添加新标签:

<warnings>
  <warning>Time out of RAD changed.</warning>
</warnings>

因此输出XML应包含以下内容: -

    <?xml version="1.0" encoding="iso-8859-1"?>
    <database>
        <rad>
            <timeout> 45 </timeout>
        </rad>
        <tac>
            <timeout> 70 </timeout>
        </tac>
     <warnings>
      <warning>Time out of RAD changed.</warning>
    </warnings>   
    </database>

有很多这样的条件可以存在。我能够完成第一部分: -

    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xslt="http://www.w3.org/1999/XSL/Transform">
    <xsl:output omit-xml-declaration="yes" indent="yes"/>
    <xsl:strip-space elements="*"/>

    <xsl:template match="/database/rad/timeout">
        <timeout>
                <xsl:choose>
                    <xsl:when test=". > 30">30</xsl:when>
                    <xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
                </xsl:choose>
        </timeout>
    </xsl:template>
        <!-- ignore text content of nodex -->
    <xsl:template match="text()" />
    </xsl:stylesheet>

然而,对于第二部分,我不知道从哪里开始,任何提示将不胜感激。感谢。

1 个答案:

答案 0 :(得分:0)

这样怎么样?

XSLT 1.0

labelVersRead.Text += "Version: " + line + "\r\n";