XSLT - 将节点添加到空白
XSLT - add nodes to whitespace
我关注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 存在连续 space 或选项卡,连续 space 或选项卡的数量应显示为 <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>
如上所示,它为我提供了 space 和节点,tab.I 是 xslt 的新手,我想知道我的代码结构是否如此。你能建议我如何完成这项任务吗?
检查 <xsl:if test="' '">
始终 returns true 因为它只是将非空字符串 ' '
转换为布尔值 true。试试 <xsl:if test="contains(., ' ')">
.
我关注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 存在连续 space 或选项卡,连续 space 或选项卡的数量应显示为 <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>
如上所示,它为我提供了 space 和节点,tab.I 是 xslt 的新手,我想知道我的代码结构是否如此。你能建议我如何完成这项任务吗?
检查 <xsl:if test="' '">
始终 returns true 因为它只是将非空字符串 ' '
转换为布尔值 true。试试 <xsl:if test="contains(., ' ')">
.