2012-06-21 80 views
2

是否有將元素中的變量作爲屬性打印的方法?作爲屬性的XSLT變量打印

示例XML:

<list> 
<name>John Doe</name> 
<name>Paul Niel</name> 
<name>Luke Dee</name> 
</list> 

這裏是我的示例XSLT;

<xsl:variable name="isDisabled"> 
    <xsl:if test="name='John Doe'"> 
     <xsl:attribute name="disabled">disabled</xsl:attribute> 
    </xsl:if> 
</xsl:variable> 

我想打印isDisabled變量像這樣;

<input id="textName" name="name" type="text" {$isDisabled} /> 

輸出;

<input id="textName" name="name" type="text" disabled="disabled" /> 
+0

那麼,什麼是源XML文檔以及轉換的想要結果是什麼。任何將前者轉化爲後者的規則?請編輯問題並提供這些重要信息。 –

+0

先生請看我更新的問題.. – mrrsb

+0

mrrsb:你不需要一個變量來完成這個任務 - 請參閱我的答案瞭解詳情。 –

回答

1

你不需要任何變量來完成這個任務

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

<xsl:template match="name[. = 'John Doe']"> 
    <input id="textName" name="name" type="text" disabled="disabled" /> 
</xsl:template> 
<xsl:template match="text()"/> 
</xsl:stylesheet> 

當這個變換所提供的XML文檔施加:

<list> 
    <name>John Doe</name> 
    <name>Paul Niel</name> 
    <name>Luke Dee</name> 
</list> 

有用,正確的結果產生:

<input id="textName" name="name" type="text" disabled="disabled"/> 

說明

正確使用模板和模板模式匹配。

注意:如果你有一個情況下(不是這一個),它是真的需要使用一個變量來創建屬性,這可以通過以下方式進行:

<input id="textName" name="name" type="text" disabled="{$isDisabled}"/> 

說明

正確使用AVT的(Attribute Value Templates