Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 获取XSLT中第二个字符出现之前的所有字符_Xml_Xslt - Fatal编程技术网

Xml 获取XSLT中第二个字符出现之前的所有字符

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

我正在尝试提取位于'-'第二次出现之前的字符串

例如: 我有这个字符串:xx-xxxx-xxxxx-xxxxxx 我试着只有:xx xxxx

但是我们也可以有这个字符串:xxx-xxx-xxxxx-xxxxxx,然后我需要:xxx-xxx

我试着在前/后使用substring实现它,但没有达到预期的效果。然后我想知道这是否可以在XSLT1.0中实现

我尝试过的代码示例:

<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() &lt;= 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() &lt;= 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。