Разделить элементы тегов на теги с разными именами с помощью XSLT - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть тег <Content>, в котором у меня есть строка, например:

"Hello how do you do END"

Я пытаюсь разделить эту строку на "\ t" и поместить каждое слово в другой именованный тег, например:

<a>Hello</a>
<b>how</b>
<c>do</c>

Я разделил их с помощью токенизации:

<xsl:template match="*:Content/text()">
   <xsl:for-each select="tokenize(.,'\t')">
    <b xmlns="">
     <xsl:sequence select="."/>
    </b>
   </xsl:for-each>
</xsl:template>

Мне просто нужно уметь различать слова позже, не зная их. Может ли кто-нибудь мне помочь?

1 Ответ

0 голосов
/ 05 ноября 2018

Вы можете отформатировать position() в правильном формате, например

  <xsl:template match="test">
      <xsl:copy>
          <xsl:for-each select="tokenize(., '\s+')">
              <xsl:element name="{format-integer(position(), 'a')}">
                  <xsl:value-of select="."/>
              </xsl:element>
          </xsl:for-each>
      </xsl:copy>
  </xsl:template>

https://xsltfiddle.liberty -development.net / nc4NzRm

Для XSLT 2 вы можете использовать xsl:number для форматирования position():

 <xsl:template match="test">
      <xsl:copy>
          <xsl:for-each select="tokenize(., '\s+')">
              <xsl:variable name="element-name">
                  <xsl:number format="a" value="position()"/>
              </xsl:variable>
              <xsl:element name="{$element-name}">
                  <xsl:value-of select="."/>
              </xsl:element>
          </xsl:for-each>
      </xsl:copy>
  </xsl:template> 

http://xsltransform.hikmatu.com/pPqsHSV

Однако, может быть, имеет смысл создать элемент с таким же именем и позицией в атрибуте:

  <xsl:template match="test">
      <xsl:copy>
          <xsl:for-each select="tokenize(., '\s+')">
              <word pos="{position()}">
                  <xsl:value-of select="."/>
              </word>
          </xsl:for-each>
      </xsl:copy>
  </xsl:template>

https://xsltfiddle.liberty -development.net / nc4NzRm / 1

...