正则表达式使用xslt在大写单词之前提取字符串

时间:2018-02-27 11:10:40

标签: xml xslt

我需要使用XSLT在第一个大写单词之前提取字符。

输入:

<au>Lmie Huke THE AUSTRALIAN UNIVERSITY and OXFORD</au>

预期产出:

<au>Lmie Huke</au>

任何人都建议。

1 个答案:

答案 0 :(得分:1)

如果您使用

  <xsl:template match="au">
      <xsl:copy>
          <xsl:value-of select="let $w := tokenize(., '\s+') return $w[position() lt index-of($w, $w[. = upper-case(.)][1])]"/>
      </xsl:copy>
  </xsl:template>

在XSLT 3或

  <xsl:template match="au">
      <xsl:copy>
          <xsl:variable name="w" select="tokenize(., '\s+')"/>
          <xsl:value-of select="$w[position() lt index-of($w, $w[. = upper-case(.)][1])]"/>
      </xsl:copy>
  </xsl:template>

在XSLT 2中,然后输入我认为它的工作原理。这完全取决于单词的构成以及单词之间的空白区域是否重要且需要保留。