Как обернуть один символ внутри элемента в XSLT 2.0 [duplicate]

Добавьте : после (?, чтобы предотвратить ссылку на паратезис:

/[\W"]*(?:"<name>".*?)[\"]*?\s*[<\(]?(?:"<email>"\S+@[^\s>)]+)[>)]?/
3
задан keithm 7 February 2015 в 03:40
поделиться

3 ответа

Я придумал http://xsltransform.net/jyH9rMo , который просто делает

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:output method="html" doctype-public="XSLT-compat" omit-xml-declaration="yes" encoding="UTF-8" indent="yes" />

    <xsl:template match="/">
      <hmtl>
        <head>
          <title>New Version!</title>
        </head>
        <xsl:apply-templates/>
      </hmtl>
    </xsl:template>

    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="text()">
   <xsl:analyze-string select="." regex="([&#x0900;-&#x097f;]+)((\s+[&#x0900;-&#x097f;]+)*)">

    <xsl:matching-substring>
      <span xml:lang="hi-Deva"><xsl:value-of select="."/></span>
    </xsl:matching-substring>

    <xsl:non-matching-substring>
      <xsl:value-of select="."/>
    </xsl:non-matching-substring>

  </xsl:analyze-string>       
    </xsl:template>
</xsl:transform>
5
ответ дан Martin Honnen 23 August 2018 в 06:49
поделиться
  • 1
    Принимаемый ответ из-за полного решения и использования & lt; xsl: value-of select = ". & Quot; / & gt; в & lt; xsl: match-substring & gt ;. – keithm 6 February 2015 в 23:15

Это должно работать (некоторые комментарии после кода):

XSLT 2.0

<xsl:analyze-string select="$textValue" regex="([&#x0900;-&#x097f;]+)((\s+[&#x0900;-&#x097f;]+)*)">
    <xsl:matching-substring>
          <span xml:lang="hi-Deva"><xsl:value-of select="regex-group(1)"/><xsl:value-of select="regex-group(2)"/></span>
    </xsl:matching-substring>
    <xsl:non-matching-substring>
          <xsl:value-of select="."/>
    </xsl:non-matching-substring>
</xsl:analyze-string>
  • регулярное выражение - это одно из ваших вторых попыток (как было правильно сопоставляя только фрагменты текста хинди!), только с круглыми скобками вокруг первой части
  • ветвь matching-substring помещает span вокруг текста хинди
  • в ветвь non-matching-substring только возвращает немодифицированную «нормальную» текстовую подстроку (вы возвращали весь текст!) [/ ​​g2]
1
ответ дан lfurini 23 August 2018 в 06:49
поделиться

В дополнение к предыдущим ответам вы можете заметить, что вместо [&#x0900;-&#x097f;]

вы можете записать \p{IsDevanagari}
1
ответ дан Michael Kay 23 August 2018 в 06:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: