Выровнять текст xml, имеющий свойство style, используя XSLT - PullRequest
1 голос
/ 20 февраля 2012
<P style="TEXT-ALIGN: center; MARGIN: 0pt; font-size:5">
    Washington
</P>

У меня есть этот код. Я хочу использовать выравнивание текста по центру, как предложено стилем с использованием XSLT. В настоящее время я использую этот код для получения значений стиля:

<xsl:value-of select="substring-before(substring-after(catalog/cd/p/@style,'TEXT-ALIGN:'),';')"/>

Это дает мне значение выравнивания текста, т.е. "center", но я хочу использовать это свойство

1 Ответ

2 голосов
/ 20 февраля 2012

Я думаю, вы спрашиваете, как вы устанавливаете атрибуты в выходном XML (который в вашем случае будет HTML).Ну, вы могли бы использовать xsl: attribute element

<p>
   <xsl:attribute name="style">text-align:<xsl:value-of select="substring-before(substring-after(catalog/cd/p/@style,'TEXT-ALIGN:'),';')"/></xsl:attribute>
</p>

Это вывело бы следующее

<p style="text-align: center" />

Однако предпочтительный метод - сделать нас из атрибуташаблоны значений, и поэтому вы также можете кодировать его следующим образом (обратите внимание на использование фигурных скобок {} для обозначения «AVT»)

<p style="text-align:{substring-before(substring-after(catalog/cd/p/@style,'TEXT-ALIGN:'),';')}">

Так, например, с учетом следующего входного XML

<catalog>
   <cd>
      <p style="TEXT-ALIGN: center; MARGIN: 0pt; font-size:5">Washington</p>
   </cd>
</catalog>

Если вы используете следующий XSLT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output method="html" indent="yes"/>

   <xsl:template match="p">
      <p style="text-align:{substring-before(substring-after(@style,'TEXT-ALIGN:'),';')}">
         <xsl:value-of select="." />
      </p>
   </xsl:template>

</xsl:stylesheet>

Выводится следующее:

<p style="text-align: center">Washington</p>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...