Передача значения атрибута XML в значение атрибута HTML с помощью XSLT - PullRequest
1 голос
/ 02 декабря 2011

У меня есть файл XML с определенными данными, которые я должен преобразовать в таблицу HTML.Есть 3-4 таблицы только с 2 столбцами и 4-5 таблиц с большим количеством столбцов.Я хочу передать значение атрибута XML, скажем tableWidth=200 или tableWidth=500 в зависимости от количества столбцов.

Пример XML-файла -

<tab>
  <!-- b="Y" will be used if Heading is required -->
  <r b="Y">
    <d>Name</d>
    <d>Age</d>
  </r>
  <r>
    <d>ABC</d>
    <d>23</d>
  </r>
</tab>

Ниже приведен файл XSLT -

<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:output method='html' media-type='text/html'/>
<xsl:template match="Tab">
<table width="500" cellpadding="6" cellspacing="0" align="center">
  <xsl:for-each select="R">
<tr>
    <xsl:choose>
        <xsl:when test="@b = 'Y'">
            <xsl:for-each select="D">
                <td align='' style='border:1px solid black'> 
                    <b><xsl:value-of select="."/></b>
                </td>
            </xsl:for-each>
        </xsl:when>
        <xsl:otherwise>
            <xsl:for-each select="D">
                <td align='' style='border:1px solid black'> 
                    <xsl:value-of select="."/>  
                </td>
            </xsl:for-each>
        </xsl:otherwise>
    </xsl:choose>
</tr>
  </xsl:for-each>
 </table>
 </xsl:template>
 </xsl:stylesheet>   

Я хочу добавить атрибут скажем tablewidth в файл XML и использовать егов теге <table> находится файл XSLT ...

1 Ответ

3 голосов
/ 02 декабря 2011

Предполагая, что вы изменили свой XML для включения атрибута tableWidth , например, так ...

<tab tableWidth="500">
    ....

Существует два способа использования атрибута в XSLT.Во-первых, более многословный способ ....

<xsl:template match="Tab">
   <table cellpadding="6" cellspacing="0" align="center"> 
      <xsl:attribute name="width"><xsl:value-of select="@tableWidth" /></xsl:attribute>

Но зачастую гораздо чище использовать шаблоны значений атрибутов.Тогда вам нужно только сделать это:

<xsl:template match="Tab">
   <table width="{@tableWidth}" cellpadding="6" cellspacing="0" align="center"> 

Оба из них должны вывести следующее:

<table width="500" cellpadding="6" cellspacing="0" align="center">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...