XSLT - разделить строку на каждый n-й символ

Привет, ребята

Я хочу создать таблицу стилей xslt 2.0, чтобы сделать следующее:

Разделите значение элемента xml ниже:

<sample>Please Move the asset as below

Asset Name: My Monitor 40 inch_123456789123
Asset Serial Number: 123456789123

Current Details:
Costcenter: 1234-123456 MY COST CENTRE
Location: 12 - 1234 - 1234 - MY COST ADDRESS,12 MY STR.,10TH FLOOR,,CITY,Country Name

Destination Details: 
Cost Center: 1234-12345 : 5678-91234 Some Place</sample>

для каждого 70-го символа, а затем назначьте первые 9 результатов каждому фиксированному, сконфигурированному новому имени элемента и отбросьте все оставшиеся совпадения. Пример:

<humpty>first 70chars</humpty>
<dumpty>second70chars</dumpty>
<sat>third70chars</sat>
etc...

Я думал об использовании tokenize, но застрял, потому что для сопоставления требуется строковый шаблон. Я думал об использовании подстроки, но не уверен в формате.

Любой совет приветствуется!


person Scrat    schedule 02.08.2013    source источник
comment
Вы можете использовать analyze-string. Однако я не уверен, где вы хотите получить новые имена элементов, такие как humpty из   -  person Martin Honnen    schedule 02.08.2013
comment
Спасибо, Мартин. Имена новых элементов будут предварительно настроены в таблице стилей и всегда останутся неизменными. Ради примера я использовал humpty и другие.   -  person Scrat    schedule 02.08.2013


Ответы (1)


Если вы знаете имена элементов и просто хотите извлечь подстроки из 70 символов, тогда http://www.w3.org/TR/xpath/#function-substring должен делать:

<xsl:template match="sample">
  <humpty><xsl:value-of select="substring(., 1, 70)"/></humpty>
  <dumpty><xsl:value-of select="substring(., 71, 70)"/></dumpty>
  <sat><xsl:value-of select="substring(., 141, 70)"/></sat>
  ...
</xsl:template>
person Martin Honnen    schedule 02.08.2013