Я пишу функцию, чтобы разбить строку, не разбивая слова. Для этого у меня есть функция возврата, которая делает рекурсивный вызов сам по себе. Это дает мне ошибку ниже
- Когда я вызываю функцию с префиксом функции, то получаю ошибку, поскольку «функция splitLine в пространстве имен http://whatever не определена».
- Когда я вызываю функцию без префикса функции, то получаю ошибку Parse в функции.
Когда я пытаюсь использовать
<xsl:value-of select="fn:splitLine($inString,$length - 1)"/>
в другом состоянии функцииполучить функцию не определена ошибка.
Когда я пытаюсь использовать без префикса функции:
<xsl:value-of select="fn:splitLine($inString,$length - 1)"/>
Я получаю ошибку разбора в функции.
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://whatever">
<xsl:output omit-xml-declaration="no" />
<xsl:output method="xml" />
<xsl:function name="fn:splitLine" as="xs:string">
<xsl:param name="inString" as="xs:string"/>
<xsl:param name="length" as="xs:numeric"/>
<xsl:variable name="delimiters"> ,."!?()</xsl:variable>
<xsl:choose>
<xsl:when test="0.0 >= $length ">
<xsl:value-of select="$inString"/>
</xsl:when>
<xsl:when test="$length >= string-length($inString)">
<xsl:value-of select="$inString"/>
</xsl:when>
<xsl:when test="contains($delimiters,substring($inString,$length + 1,1))">
<xsl:value-of select="substring($inString,1,$length)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="fn:splitLine($inString,$length - 1)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:function>
<xsl:template match="/">
<xsl:value-of select="fn:splitLine('3 ZHANLANGUAN RD XICHENG, , , BEIJING, , CN, ',35)"/>
</xsl:template>
</xsl:stylesheet>
Я ожидаю выводабыть "3 ZHANLANGUAN RD XICHENG,,,", не нарушая слова.