Xml 获取XSLT中第二个字符出现之前的所有字符
我正在尝试提取位于'-'第二次出现之前的字符串 例如: 我有这个字符串:xx-xxxx-xxxxx-xxxxxx 我试着只有:xx xxxx 但是我们也可以有这个字符串:xxx-xxx-xxxxx-xxxxxx,然后我需要:xxx-xxx 我试着在前/后使用substring实现它,但没有达到预期的效果。然后我想知道这是否可以在XSLT1.0中实现 我尝试过的代码示例:Xml 获取XSLT中第二个字符出现之前的所有字符,xml,xslt,Xml,Xslt,我正在尝试提取位于'-'第二次出现之前的字符串 例如: 我有这个字符串:xx-xxxx-xxxxx-xxxxxx 我试着只有:xx xxxx 但是我们也可以有这个字符串:xxx-xxx-xxxxx-xxxxxx,然后我需要:xxx-xxx 我试着在前/后使用substring实现它,但没有达到预期的效果。然后我想知道这是否可以在XSLT1.0中实现 我尝试过的代码示例: <xsl:template match="/RESULT"> <RESULT> &l
<xsl:template match="/RESULT">
<RESULT>
<xsl:if test="contains(Number,'-')">
<ref>
<xsl:value-of select="substring-before(substring-after(Number,'-')'')"/>
</ref>
</xsl:if>
</RESULT>
</xsl:template>
提前感谢您在第一个
-
开始之前获取子字符串
substring-before(Number, '-')
substring-before(substring-after(Number, '-'), '-')
要在第二个
-
之前获取子字符串,但在第一个-
之后获取子字符串,请执行以下操作
substring-before(Number, '-')
substring-before(substring-after(Number, '-'), '-')
然后,您可以将它们连接起来以获得所需的值
<xsl:value-of select="concat(substring-before(Number, '-'), '-', substring-before(substring-after(Number, '-'), '-'))" />
如果您可以使用XSLT2.0,您可以这样做
<xsl:value-of select="tokenize(Number, '-')[position() <= 2]" separator="-" />
要在第一个
之前获取子字符串-
执行
substring-before(Number, '-')
substring-before(substring-after(Number, '-'), '-')
要在第二个
-
之前获取子字符串,但在第一个-
之后获取子字符串,请执行以下操作
substring-before(Number, '-')
substring-before(substring-after(Number, '-'), '-')
然后,您可以将它们连接起来以获得所需的值
<xsl:value-of select="concat(substring-before(Number, '-'), '-', substring-before(substring-after(Number, '-'), '-'))" />
如果您可以使用XSLT2.0,您可以这样做
<xsl:value-of select="tokenize(Number, '-')[position() <= 2]" separator="-" />
能否显示您当前尝试的代码?非常感谢。您使用的是哪种XSLT处理器?我将Saxon9与XSLVersion1.0Saxon9一起使用。Saxon9是XSLT2.0(resp.3.0)处理器;您可以使用regex和/或tokenize。能否显示您当前尝试的代码?非常感谢。您使用的是哪种XSLT处理器?我将Saxon9与XSLVersion1.0Saxon9一起使用。Saxon9是XSLT2.0(resp.3.0)处理器;您可以使用regex和/或tokenize。