У меня есть XSL-файл с процессом xml to xml.В разделе «Заголовок» таблицы мне нужно отформатировать текст так же, как и ожидаемый результат, особенно переводы строк / разрывы.
Моя проблема в том, что нет точного соответствия, когда или где ставить новую строку, кроме количества столбцов.
Требования для этого:
1 .Должен иметь только один xsl-файл, потому что я запусту его через приложение saxon9he, которое я использую, но не создал.
2 .Решением является либо решение с помощью одного только xsl, либо использование динамического регулярного выражения.
3 .Необходимо отделить слово / слова от новой строки / перерывов, но не следует разбивать слово.
Насколько я знаю в XSLT, это всего лишь преобразование данных, означающее, что динамический источник не может обработать одинфайл.Так что я сосредоточен на регулярных выражениях.
У меня есть синтаксис, подобный \ b. {1,15} \ b | \ b \ S + \ b .Ожидаемый результат был идеальным, когда я тестировал его на сайте тестирования регулярных выражений, но, к сожалению, я получил ошибку, когда применил его в xsl, \ b (граница слова) не поддерживается XSLT 2.0 или SAXON9.
За исключением границы слова, lookahead и lookbehind не поддерживаются.
Пожалуйста, помогите мне подражать моему регулярному выражению или если есть альтернативный синтаксис для \ b, или если кто-нибудь знает, как справиться с этим только через XSLT.
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:fn="http://www.w3.org/2005/xpath-functions"
xmlns:xdt="http://www.w3.org/2005/xpath-datatypes"
xmlns:err="http://www.w3.org/2005/xqt-errors"
exclude-result-prefixes="xs xdt err fn">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<body>
<xsl:for-each select="sst/si">
<para>
<xsl:choose>
<xsl:when test="../NumberOfColumn = '15'">
<xsl:analyze-string select="t" regex="\b.{{1,15}}\b|\b\S+\b">
<xsl:matching-substring>
<br />
<text>
<xsl:value-of select="regex-group(0)"/>
</text>
</xsl:matching-substring>
</xsl:analyze-string>
</xsl:when>
<xsl:when test="../NumberOfColumn = '10'">
<xsl:analyze-string select="t" regex="\b.{{1,10}}\b|\b\S+\b">
<xsl:matching-substring>
<br />
<text>
<xsl:value-of select="regex-group(0)"/>
</text>
</xsl:matching-substring>
</xsl:analyze-string>
</xsl:when>
<xsl:otherwise>enter code here
...
</xsl:otherwise>`enter code here`
</xsl:choose>
</para>
</xsl:for-each>
</body>
</xsl:template>
</xsl:stylesheet>
Ожидаемый результат:
<body>
<para>
<text>In the end of</text>
<br/>
<text>the road.</text>
</para>
<para>
<text>It's</text>
<br/>
<text>incomprehensible</text>
<br/>
<text>to me that he</text>
<br/>
<text>could have</text>
<br/>
<text>acted that way.</text>
</para>
<para>
<text>Unimaginatively</text>
<br/>
<text>has lots of</text>
<br/>
<text>vowels!!!</text>
</para>
<para>
<text>An</text>
<br/>
<text>uncopyrightable</text>
<br/>
<text>song,</text>
</para>
<para>
<text>but one other</text>
<br/>
<text>word without</text>
<br/>
<text>repeated</text>
<br/>
<text>letters is</text>
<br/>
<text>longer—subdermatoglyphic.</text>
</para>
<para>
<text>A state where</text>
<br/>
<text>the inferior</text>
<br/>
<text>rays of the</text>
<br/>
<text>pectoral fins</text>
<br/>
<text>are entirely or</text>
<br/>
<text>partially</text>
<br/>
<text>detached from</text>
<br/>
<text>the body?</text>
</para>
<para>
<text>Long-headed?</text>
</para>
<para>
<text>The study of</text>
<br/>
<text>sociological</text>
<br/>
<text>codes...</text>
</para>
<para>
<text>One nibbling a</text>
<br/>
<text>woman's</text>
<br/>
<text>earlobes</text>
</para>
<para>
<text>1one? is not</text>
<br/>
<text>equal to</text>
<br/>
<text>17seventeen.</text>
</para>
</body>