我想将“@sorregion name [.=’default’]”下的RequestQueue elemt的值更改为“DEFAULT.REQUEST.我尝试使用下面的身份模板.有人可以帮我解决这个假牙模板.我想要仅使用身份模板.
我的xsl文件
我的xsl文件
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl" > <xsl:output method="xml" indent="yes"/> <xsl:template match="@* | node()"> <xsl:copy> <xsl:apply-templates select="@* | node()"/> </xsl:copy> </xsl:template> <xsl:template match="@name[.='default']/QueueDetails/RequestQueue"> <xsl:value-of select="'DEFAULT.REQUEST'"/> </xsl:template> </xsl:stylesheet>
我的输入xml
我如何处理这个问题的方式与@Kirill Polishchuk的做法(顺便说一下)相同,那就是仅针对需要更改的节点覆盖身份转换.
原文链接:https://www.f2er.com/xml/292714.html但是,在您的问题中,您说“我只想使用身份模板.”.如果确实如此,并且您只需要一个模板,则可以这样做:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes"/> <xsl:strip-space elements="*"/> <xsl:template match="node()|@*"> <xsl:choose> <xsl:when test="current()[name()='RequestQueue'][ancestor::SORRegion[@name = 'default']]"> <xsl:copy> <xsl:text>DEFAULT.REQUEST</xsl:text> </xsl:copy> </xsl:when> <xsl:otherwise> <xsl:copy> <xsl:apply-templates select="node()|@*"/> </xsl:copy> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet>
我很想知道你为什么只想使用身份转换模板.如果您最终需要修改的不仅仅是RequestQueue,那么它会变得很难看.