XML
文件:
<string-name>
<surname>Husebo</surname><given-names>BS</given-names>
</string-name>, <string-name>
<surname>Ballard</surname> <given-names>C</given-names></string-name>
XSL :
<xsl:template match="surname">
<xsl:choose>
<xsl:when test = "following-sibling::node()[not(./*) and normalize-space(.)='']">
<xsl:text> </xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
输出:Husebo BS, Ballard C
我想在检查空白后在< surname>
和< given-name>
标记之间添加一个空格。 ex-对于第一个< string-name>
,< surname>
和< given-name>
之间没有空格,因此在检查之后,< /surname>
之后应添加一个空格。但是在2nd
< /string-name>
标签中,已经存在一个空格,因此不会在其中添加任何空间。请帮忙!!!
答案 0 :(得分:1)
使用此代码希望对您有所帮助:
<xsl:template match="surname[not(following-sibling::node()[1][self::text()[. = ' ']])]">
<xsl:apply-templates/>
<xsl:text> </xsl:text>
</xsl:template>
如果您想更具体一点,请检查一下是否给出了紧随其后的兄弟名称,然后使用以下代码:
<xsl:template match="surname[not(following-sibling::node()[1][self::text()[. = ' ']]) and following-sibling::node()[1][self::given-names]]">
<xsl:apply-templates/>
<xsl:text> </xsl:text>
</xsl:template>
答案 1 :(得分:0)
只要given-names
不是可选的,就可以检查下一个文本节点是否与下一个节点相同:
<xsl:template match="surname">
<xsl:choose>
<xsl:when test="following-sibling::node()[1] != following-sibling::text()[1]">
<xsl:apply-templates/>
<xsl:text> </xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>