2011-10-10 56 views
0

這可能是一個非常基本的問題,但我一直沒能在這裏或通過谷歌檢查一小時後發現任何東西。我有一個輸入負載的形式和一個搜索自動完成,它將爲選定的記錄調用xml數據。我打算使用XSLT來轉換此XML數據併爲該客戶端重新生成表單的完整版本。我是XSLT的新手,所以到目前爲止我一直在嘗試使用更小的示例,但即使在這個較小的設置中,我也無法獲取生成的HTML,從而使其輸入由XML中的數據填充。XSLT是否可以使用返回的XML數據填充輸入字段?

Xalan將生成HTML,因此我認爲XML和XSLT至少是vaild。下面顯示了兩者的示例代碼。我知道在XSLT中存在冗餘代碼(關鍵字等)。這只是一個充分的形式,我希望能夠開始工作,一旦我可以排序出來。

XML

<?xml version="1.0"?> 
<!-- clienttest.xml --> 
<?xml-stylesheet type="text/xsl" href="XSLTtest.xsl"?> 
<clientdetails> 
    <clientcode> 
     <CL.CREF>testsubjectcode</CL.CREF> 
    </clientcode> 
    <clientname> 
     <CL.NAME>testsubjectname</CL.NAME> 
    </clientname> 
    <clientaccount> 
     <CL.ACCT>testsubjectaccount</CL.ACCT> 
    </clientaccount> 
</clientdetails> 

XSLT

<?xml version="1.0"?> 
<!-- greeting.xsl --> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:output method="html" indent="yes" omit-xml-declaration="no" 
      encoding="UTF-8" 
      doctype-public="-//W3C//DTD XHTML 1.1//EN" 
      doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"/> 

    <xsl:template match="/"> 
     <html> 
      <head> 
       <title>XSLT Trials</title> 
      </head> 
      <body> 
        <xsl:apply-templates select="clientdetails"/> 
      </body> 
     </html> 
    </xsl:template>    

    <xsl:template match="clientdetails"> 
     <form> 
      <label for="clientcode">Client code:</label>  
      <input class="medium" name="clientcode" method="post" onkeyup="changed2()" type="text" id="clientcode" placeholder="New client's code"> 
       <xsl:value-of select="./clientcode/CL.CREF"/> 
      </input> 
      <br></br> 
      <label for="clientname">Client name:</label> 
      <input class="medium" name="clientname" method="post" onkeyup="changed()" type="text" id="clientname" placeholder="New client's name"> 
       <xsl:value-of select="./clientname/CL.NAME"/> 
      </input> 
      <br></br> 
      <label for="secondaccountcode">Second account code:</label> 
      <input class="medium" id="secondaccountcode" name="secondaccountcode" type="text"> 
       <xsl:value-of select="./clientaccount/CL.ACCT"/> 
      </input> 
     </form> 
    </xsl:template> 
</xsl:stylesheet> 

如果誰能給我一個手將是巨大的。我覺得我非常接近,但我不能讓它表現得很好。由於

+0

你是問有關填充「輸入」元素從XML獲取的數據屬性? – Vitaliy

回答

2

如果我正確underdstand你的問題 - 你需要填寫動態輸入元素的屬性。

對於此屬性值,您可以使用活動值模板 - xPath表達式使用曲線括號(「{」和「}」)進行限制。 因此您的XSLT「clientdetails」模板會(見屬性):

<xsl:template match="clientdetails"> 
    <form> 
     <label for="clientcode">Client code:</label>  
     <input class="medium" name="clientcode" method="post" onkeyup="changed2()" type="text" id="clientcode" placeholder="New client's code" value="{./clientcode/CL.CREF}"> 
     </input> 
     <br></br> 
     <label for="clientname">Client name:</label> 
     <input class="medium" name="clientname" method="post" onkeyup="changed()" type="text" id="clientname" placeholder="New client's name" value="{./clientname/CL.NAME}"> 
     </input> 
     <br></br> 
     <label for="secondaccountcode">Second account code:</label> 
     <input class="medium" id="secondaccountcode" name="secondaccountcode" type="text" value="{./clientaccount/CL.ACCT}"> 
     </input> 
    </form> 
</xsl:template> 
+0

是的,這正是我想要做到的。非常感謝您的幫助 – cryotorched

相關問題