Как добавить определенное количество пробелов в XSLT 2.0 - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть преобразование сообщения XML в фиксированную длину. В конце каждой записи я должен добавить пробелы, например - X (4), X (15).

Есть ли варианты вставки пробелов помимо xsl: text.

1 Ответ

1 голос
/ 02 мая 2019

Конечно, вы можете, например, определить параметр или переменную, например,

<xsl:param name="padding" as="xs:string" select="'    '"/>

и тогда, где вам это нужно, вы не используете xsl:text, а скорее <xsl:value-of select="$padding"/>. Или, как я указал в комментарии, если вы хотите «вычислить» заполнение, вы можете использовать выражения <xsl:param name="padding-length" as="xs:integer" select="4"/> и <xsl:param name="padding" as="xs:string" select="string-join(for $in in 1 to $padding-length return ' ', '')"/>, а затем использовать переменную с xsl:value-of или, конечно, в любом concat или другом месте. Наконец, ваш пример X(4) или X(15) выглядит как вызов функции, поэтому определите функцию

и буквально звоните mf:X(4), где вам нужно значение, например с xsl:value-of. Как и для любой пользовательской функции в XSLT 2, вам необходимо объявить и использовать некоторое пространство имен / префикс для вашей функции в вашей таблице стилей, например, <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:mf="http://example.com/mf" version="2.0" exclude-result-prefixes="mf">.

...