XML属性值传递给使用XSLT HTML Atrribute值(Passing XML Attrib

2019-09-28 03:34发布

我有,我必须把它转换成HTML表的某些数据的XML文件。 有3-4台,只有2列和表4-5与多个列。 我想通过XML属性值,说tableWidth=200tableWidth=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文件...

Answer 1:

假设你已经修改了你的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">


文章来源: Passing XML Attribute value to HTML Atrribute value using XSLT
标签: html xml xslt