Хотите разделить ширину границы таблицы с помощью xslt - PullRequest
1 голос
/ 21 февраля 2011

Ввод html-стиля ::

border: #5f497a 3pt solid;
     or

border: 3pt #5f497a solid;
     or

border: solid #5f497a 3pt;

Привет всем,Пожалуйста, помогите мне .. Спасибо заранее ..

Примечание: у меня всегда будет одна цифра перед pt

1 Ответ

1 голос
/ 21 февраля 2011

Это преобразование :

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="table">
  <xsl:apply-templates select="@style"/>
 </xsl:template>

 <xsl:template match="@style">

  <xsl:if test="string-length() >0">
    <xsl:variable name="vValues"
       select="substring-after(.,':')"/>
    <xsl:variable name="vNormalized" select=
    "translate(normalize-space(concat(';',$vValues)),
               ' ',
               ';')
    "/>

    <xsl:variable name="vEndingWidth" select=
     "substring-before($vNormalized,'pt;')"/>

    <xsl:variable name="vLength"
         select="string-length($vEndingWidth)"/>

    <xsl:value-of select="substring($vEndingWidth, $vLength)"/>
  </xsl:if>
 </xsl:template>
</xsl:stylesheet>

при применении к следующему документу XML:

<t>
    <table style="border: #5f497a 3pt solid;"/>
    <table style="border: 3pt #5f497a solid;"/>
    <table style="border: solid #5f497a 3pt;"/>
</t>

дает желаемые, правильные результаты:

3
3
3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...