如何解决XML / XSL if else子字符串
如果条目太长,我想用if子句在 XML / XSL 中对变量进行子字符串化。
我尝试过类似的方法,但是它不能那样工作。
<xsl:variable id="newId" select="./newId"/>
<xsl:template match="newId">
<xsl:choose>
<xsl:when test="string-length() < 15">
<xsl:value-of select="newId"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="substring(.,1,15)" />
<br>
<xsl:value-of select="substring(.,16)" />
</br>
</xsl:otherwise>
</xsl:choose>
解决方法
需要在代码中进行一些更改。
- xsl:variable具有“名称”属性,而不是“ id”
- 字符串长度函数需要一个参数
这是我要怎么做:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:variable name="newId" select="'SomeText123456789'"/>
<xsl:choose>
<xsl:when test="string-length($newId) < 15">
<xsl:value-of select="$newId"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="substring($newId,1,15)" />
<br>
<xsl:value-of select="substring($newId,16)" />
</br>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
看到它在这里工作:https://xsltfiddle.liberty-development.net/jxDjind
,我看不到您的模板有什么特别的错误,除了:
<xsl:value-of select="newId"/>
需要是:
<xsl:value-of select="."/>
因为您已经在newId
的上下文中。
不知道为什么不使用变量,或者根本不需要变量。如果由于某种原因确实需要它,则正确定义它;您现在拥有的将产生错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。