我有以下xml
<session id="1" type="spaceTest">
<p>sentencewithnospace</p>
<p>sentence withtenspace</p>
<p>sentence withonetab</p>
<p>sentence withtentabs</p>
</session>
我的要求是将<s>
节点添加到space
并将节点添加到选项卡。并且id存在连续的空格或制表符,连续空格或制表符的数量应显示为<s>
或<t>
节点的属性。所以输出应该是,
<session id="1" type="spaceTest">
<p>sentencewithnospace</p>
<p>sentence<s c="10"/> withtenspace</p>
<p>sentence<t c="1"/> withonetab</p>
<p>sentence<t c="10"/> withtentabs</p>
</session>
我已经在xsl之后编写了这个任务,
<xsl:template match="p/text()" priority="10">
<xsl:analyze-string select="." regex=" +|	+">
<xsl:matching-substring>
<xsl:if test="' '">
<s c="{string-length()}"/>
</xsl:if>
<xsl:if test="'	'">
<t c="{string-length()}"/>
</xsl:if>
<xsl:value-of select="."/>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</template>
但是这给了我以下输出,
<session id="1" type="spaceTest">
<p>sentencewithnospace</p>
<p>sentence<s c="10"/><t c="10"/> withtenspace</p>
<p>sentence<s c="1"/><t c="1"/> withonetab</p>
<p>sentence<s c="10"/><t c="10"/> withtentabs</p>
</session>
如上图所示,它为空间和制表符提供了节点和节点。我是xslt的新手,我想知道我的代码结构是否存在。你能建议我怎么做这个任务吗?
答案 0 :(得分:1)
check <xsl:if test="' '">
总是返回true,因为它只是将非空字符串' '
转换为布尔值true。试试<xsl:if test="contains(., ' ')">
。