Xml XSLT:替换没有原始节点的元素/节点';s文本
我正在为一个项目玩XSLT,只是尝试使用一些XSLT函数来获得所需的输出,但遇到了一个我正在尝试解决的小问题。我看过很多关于替换的帖子,但到目前为止还没有一篇能解决这个看似简单的问题 鉴于此XML:Xml XSLT:替换没有原始节点的元素/节点';s文本,xml,xslt,Xml,Xslt,我正在为一个项目玩XSLT,只是尝试使用一些XSLT函数来获得所需的输出,但遇到了一个我正在尝试解决的小问题。我看过很多关于替换的帖子,但到目前为止还没有一篇能解决这个看似简单的问题 鉴于此XML: <?xml version="1.0" encoding="UTF-8"?> <catalog> <cd> <title>Empire Burlesque</title> <artist>Bob Dylan&
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country><font size='8pt' name='Verdana' color='navy'/>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
</catalog>
皇帝讽刺剧
但是,我得到的是下面的附加文本“美国”
皇帝讽刺剧
美国
这是我编写的XSLT
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="cd">
<div>
<xsl:apply-templates select="title"/>
<xsl:apply-templates select="country"/>
</div>
</xsl:template>
<xsl:template match="country">
<p>
<xsl:call-template name="replacement">
<xsl:with-param name="txt" select="."/>
</xsl:call-template>
<xsl:apply-templates/>
</p>
</xsl:template>
<xsl:template name="replacement">
<i><a href="wwww.google.com.au">GOOGLE </a> </i>
</xsl:template>
<xsl:template match="title">
<b><xsl:value-of select="."/></b>
</xsl:template>
</xsl:stylesheet>
我的CD收藏
有谁能给我一些建议,如何在没有国家元素的美国文本的情况下获得所需的输出
干杯,您的模板匹配
国家/地区
包括以下说明:
<xsl:apply-templates/>
这将模板应用于国家/地区的所有子节点,包括文本节点“USA”
。您没有匹配text()
的模板,因此这是由将文本复制到输出的处理
如果不希望发生这种情况,请删除xsl:apply templates
指令(或添加一个模板以不同的方式处理文本节点)。我已将您的问题回滚到我回答时的问题。请开始一个新问题,并在那里解释您的新问题。如果您遇到错误,请务必也引用错误消息。我向Michael道歉,我们似乎同时在进行更改。最初的帖子是我试图解决的问题的一个稍微简化的版本。我会根据要求创建一个新帖子,谢谢Michael!由于某些原因,我无法通过编辑添加此内容,因为我似乎被锁定了。为了进一步澄清,我想在最后补充的是。当且仅当测试test=“contains($txt,[a')”>
为真时,我才试图实现类似的目标。如果测试test=“contains($txt,[a')”>
为假,那么我只希望
围绕文本()运行元素的内容。@spikycactus如我所说,这与您原来的问题无关。请重新开始。抱歉,没有注意到您的评论。我现在将创建一个新帖子。干杯
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="cd">
<div>
<xsl:apply-templates select="title"/>
<xsl:apply-templates select="country"/>
</div>
</xsl:template>
<xsl:template match="country">
<p>
<xsl:call-template name="replacement">
<xsl:with-param name="txt" select="."/>
</xsl:call-template>
<xsl:apply-templates/>
</p>
</xsl:template>
<xsl:template name="replacement">
<i><a href="wwww.google.com.au">GOOGLE </a> </i>
</xsl:template>
<xsl:template match="title">
<b><xsl:value-of select="."/></b>
</xsl:template>
</xsl:stylesheet>
<xsl:apply-templates/>