2013-06-03 46 views
0

進出口新的XML和XSLT,不知道是否任何人能在這裏幫助:獲取網頁嵌套的記錄

我有以下數據

<?xml version="1.0" encoding="utf-8"?> 
<uformrecords> 
    <uformrecord> 
    <state>Approved</state> 
    <created>2009-11-13T10:01:55</created> 
    <updated>2009-11-13T10:01:55</updated> 
    <id>119ecc43-df79-46e1-9020-b2e27e239175</id> 
    <ip>127.0.0.1</ip> 
    <pageid>0</pageid> 
    <memberkey></memberkey> 
    <fields> 
     <name record="119ecc43-df79-46e1-9020-b2e27e239175" sortorder="0"> 
     <key>2295187e-0345-4260-a406-eabcc1e774e2</key> 
     <fieldKey>e6157c93-0b54-4415-b7ba-5c7c2c953b70</fieldKey> 
     <caption>Name</caption> 
     <datatype>String</datatype> 
     <values> 
      <value><![CDATA[My Name]]></value> 
     </values> 
     </name> 
     <email record="119ecc43-df79-46e1-9020-b2e27e239175" sortorder="1"> 
     <key>a92875a8-938d-4ba0-990a-59a3518ce62c</key> 
     <fieldKey>d8b10ffb-c437-4a44-8df6-01e6af5ac26f</fieldKey> 
     <caption>Email</caption> 
     <datatype>String</datatype> 
     <values> 
      <value><![CDATA[[email protected]]]></value> 
     </values> 
     </email> 
    </fields> 
    </uformrecord> 
</uformrecords> 

在頁面的XML格式,我有以下XSLT代碼,以獲得一些記錄

<ul> <xsl:for-each select="umbraco.contour:GetRecordsFromPage($currentPage/@id)//uformrecord"> 
    <xsl:sort select="created" order="ascending"/> 
    <li> 
     A record with id id <xsl:value-of select="id"/> with the state set to <xsl:value-of select="state"/> i 
     was created on <xsl:value-of select="umbraco.library:LongDate(created)"/> 
    </li> 

    </xsl:for-each> 
</ul> 

這工作正常,但如果我添加字幕

<xsl:value-of select="caption"/> 

該字段爲空。我認爲它是空的,因爲節點可能需要迭代。所以,我有下面的代碼通過記錄

<xsl:for-each select="umbraco.contour:GetRecord($id)/uformrecord/fields/child::*"> 
    <xsl:sort select="caption" order="ascending"/> 
    <h4> 
     <xsl:value-of select=" caption"/> 
    </h4> 
</xsl:for-each> 

迭代,但我有一個ID未聲明的錯誤 - 如果我聲明ID我得到的錯誤,它沒有在正確的GUID格式。任何人都可以建議如何克服這個問題並顯示「標題」元素?

感謝

回答

0

在你的第一個的xsl:for-每個你迭代uformrecord,所以這將是循環中的上下文。

<xsl:for-each select="umbraco.contour:GetRecordsFromPage($currentPage/@id)//uformrecord"> 

然而,當你發現時,標題元素不是uformrecord元素的直接孩子,但在元低了下去。

因爲你已經定位在uformrecord,你應該能夠簡化您的的xsl:for-每個這樣:

<xsl:for-each select="fields/*"> 
    <xsl:sort select="caption" order="ascending"/> 
    <h4> 
     <xsl:value-of select="caption"/> 
    </h4> 
</xsl:for-each>