情景:
我有一个包含6个文本值的元素。
<e1>A B C D E F</e1>
A,B,...,F
是多字符固定长度字符串。
我想将这6个文本值映射到6个不同的元素,如
<v1>A</v1>............<v6>F</v6>
我的XSLT包含以下逻辑:
<xsl:variable name="vTokens">
<TokenValue>
<xsl:copy-of select="str:tokenize(.,' ' )"/>
</TokenValue>
</xsl:variable>
<v1>
<xsl:value-of select="$vTokens/TokenValue/token[1]"/>
</v1>
<v6>
<xsl:value-of select="$vTokens/TokenValue/token[2]"/>
</v6>
问题:
这些文本值中的任何一个都可以为空,但它是一个固定长度的空白字符串;例如,A可以是14个字符的NULL字符串,它与tokenize
中的分隔符混淆。因此,如果缺少B,则元素<v2>
将在最终输出中包含C,并且<v6>
甚至不存在。
因此,如果输入中缺少B / C / D / E,则结果永远不会包含<v6>
元素,并且除了<v1>
之外的所有其他元素中都会放置错误的值。
答案 0 :(得分:0)
像
这样的东西<xsl:variable name="s" select="."/>
<xsl:for-each select="1 to string-length($s) div $N">
<token><xsl:value-of select="substring($s, ., $N)"/></token>
</xsl:for-each>