对不起格式,'长期潜伏者,第一次海报'....
我自己和另一位程序员一直在研究这个,并尝试了许多排列。我想要捕捉的是最后一个“这是条外未标记的文本”行......不知道如何更好地描述标记,但我收到一个结构如下的 XML 块:
<?xml version="1.0" encoding="UTF-8"?>
<text>
<inlineTag name="bar">
<inlineTag name="text">
<inlineTag name="strong">
THIS IS A SIDEBAR BOX
</inlineTag>
</inlineTag>`
<break type="paragraph"/>
<break type="paragraph"/>
This is untagged text inside bar.
</inlineTag>
This is untagged text outside bar
</text>
我针对这个 xslt 运行它:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:template name="Untagged_Bar" match="text()[parent::node()/@name='bar']">
<xsl:choose>
<xsl:when test="self::text() and string-length(.) > 0">
<xsl:element name="p">
<xsl:attribute name="class" select="'k4text'"/>
<xsl:value-of select="."/>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="bold" match="//inlineTag[@name='strong']">
<xsl:element name="strong">
<xsl:value-of select="."/>
</xsl:element>
</xsl:template>
<xsl:template match="/">
<root>
<xsl:apply-templates/>
</root>
</xsl:template>
我明白了,这几乎是我想要的......
<?xml version="1.0" encoding="UTF-8"?>
<root>
<p class="k4text">
</p>
<strong>
THIS IS A SIDEBAR BOX
</strong>
<p class="k4text">
</p>
<p class="k4text">
</p>
<p class="k4text">
This is untagged text inside bar.
</p>
This is untagged text outside bar
</root>
我想要的更像是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<p class="k4text">
<strong>
THIS IS A SIDEBAR BOX
</strong>
</p>
<p class="k4text">
This is untagged text inside bar.
</p>
<p class="k4text">
This is untagged text outside bar
</p>
</root>
我错过了什么?我有另一个 xslt 人在这里工作,我们尝试了很多排列,这是我们能得到的最接近的,但我们仍然不能最后
<p class="k4text">
This is untagged text outside bar
</p>
出来正确...任何想法/帮助/建议非常感谢!