【问题标题】:Get nested record on page在页面上获取嵌套记录
【发布时间】:2013-06-03 11:15:18
【问题描述】:

我是 XML 和 XSLT 的新手,想知道是否有人可以在这里提供帮助:

我有一个包含以下数据的 XML 表单

<?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[pph@testdomain.com]]></value> 
        </values> 
      </email> 
    </fields>
  </uformrecord>
</uformrecords>

在页面上我有下面的 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 格式不正确。谁能建议如何解决这个问题并显示“标题”元素?

谢谢

【问题讨论】:

    标签: xslt umbraco umbraco-contour


    【解决方案1】:

    在您的第一个 xsl:for-each 中,您正在迭代 uformrecord,因此这将是您在循环中的上下文。

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

    但是,如您所见,caption 元素不是 uformrecord 元素的直接子元素,而是位于 field 元素下方.

    由于您已经定位于 uformrecord,您应该能够将您的 xsl:for-each 简化为:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      相关资源
      最近更新 更多