以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  xslt:如何复制xml所有节点但是改变其中一个节点的值  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=87330)


--  作者:hexuan
--  发布时间:10/27/2010 5:25:00 PM

--  xslt:如何复制xml所有节点但是改变其中一个节点的值
xslt新手,希望大家可以帮忙。
我有一个input的xml文件,如下:
<IFS>
<IFN>
<IDT>
<ORG>aaa</ORG>
</IDT>   
<TRA>
<TTY>0</TTY>
</TRA>
</IFN>   
<IFN>
<IDT>
<ORG>bbb</ORG>  
</IDT>
<TRA>
<TTY>0</TTY>   
</TRA>
</IFN>
</IFS>
我想输出xml文件,保留现有格式,只是<TTY>的值需要先进行判断。如果<ORG>='aaa',那么<TTY>1</TTY>,否则<TTY>0</TTY>.
折腾了一天也没弄出来,希望高手可以帮帮我,十分感谢!!

--  作者:Qr
--  发布时间:10/27/2010 9:33:00 PM

--  
<TRA>
<TTY><xsl:choose><xsl:when test="IDT\ORG='aaa'">1</xsl:when><xsl:otherwise>0</xsl:otherwise></xsl:choose></TTY>
</TRA>

--  作者:hexuan
--  发布时间:10/28/2010 3:24:00 PM

--  
谢谢您的回复!
不过我还是不太明白:P
这是我试着写的xsl文件:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="*">
        <xsl:copy>
            <xsl:apply-templates select="@*|*|text()"/>
        </xsl:copy>
    </xsl:template>
    <xsl:template match="tty">
        <TTY><xsl:apply-templates select="@*"/>replaced Value</TTY>
    </xsl:template>  
    <xsl:template match="@*|text()">
        <xsl:copy/>
    </xsl:template>   
</xsl:stylesheet>

可是应该不能直接用您的那一行代码替换 replaced Value吧?因为我是在匹配的TTY节点,找不到ORG的值。

希望您给我指点指点,谢谢啦~~


--  作者:Qr
--  发布时间:10/29/2010 7:13:00 PM

--  
你该补一补XPath了。

test="../preceding-sibling::IDT/ORG='aaa'"


--  作者:hexuan
--  发布时间:10/29/2010 7:56:00 PM

--  
谢谢您啦~
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
78.125ms