首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XForms重复- JavaScript错误

XForms重复- JavaScript错误
EN

Stack Overflow用户
提问于 2012-03-08 18:59:56
回答 1查看 232关注 0票数 1

我正在使用XForms构建一个以XML-DB eXist-db作为后端的web应用程序。eXist将XForms代码转换为HTML和JavaScript。

首先,我得到了两个实例:

代码语言:javascript
复制
<xf:instance xmlns="" id="results">
  <result>
    <ServiceDefinition>
      <InventoryLabel LastChange="2012-01-24">SVC380712435</InventoryLabel>
      <SystemName IPaddress="111.222.333.123">XXX</SystemName>
      <Service ServiceCategory="Internetservice">Web-Server</Service>
      <OSClass OperatingSystem="CentOS">UNIX</OSClass>
      <SystemType Manufacturer="VMware">VM</SystemType>
      <Backup/>
      <Location SystemContact="Max Power" AdminGroup="power">N22</Location>
    </ServiceDefinition>
    ....
  </result>
</xf:instance>

<xf:instance xmlns="" id="domain">
  <system name="XXX">
    <NIC MAC="00-50-56-ae-00-3c" 
         time="1329167846" missed="1323350247" state="inactive" 
         IP="111.222.333.123" LAN="Test"/>
  </system>
  ...
</xf:instance>

我想使用xf:repeat构建一个表,以遍历“<ServiceDefinition>”实例中的所有结果元素。每一行都包含一个“Status”列,我希望将来自“domain”实例的相关“state”信息放在其中。

这是该表的XForms代码:

代码语言:javascript
复制
    <div class="table">
    <table border="0">
       <thead>
          <tr>
             <th class="sysName">Hostname</th>
                  <th class="services">Service</th>
                  <th class="os">OS Class</th>
                  <th class="location">Location</th>
                  <th class="link">Details</th>
                  <th>Status</th>
                </tr>
              </thead>
              <tbody>
              <xf:repeat nodeset="instance('results')/result/ServiceDefinition" id="link-repeat">
                <tr>
                  <td class="sysName"><xf:output ref="SystemName"  /></td>
                  <td>
                    <xf:repeat nodeset="Service" class="row">
                      <div>
                        <xf:output ref="."/>
                      </div>
                    </xf:repeat>
                  </td>
                  <td class="os"><xf:output ref="OSClass"/> </td>
                  <td class="location"><xf:output ref="Location" /></td>
                  <td class="link">
                    <xf:trigger submission="view-entry" appearance="minimal" class="url">
                      <xf:label>View</xf:label>
                      <xf:action ev:event="DOMActivate">
                        <xf:setvalue ref="instance('URL-container')" 
                                   value="concat('serviceDetails.xql?svc=', instance('results')/result/ServiceDefinition[index('link-repeat')]/InventoryLabel)"/>
                        <xf:load ref="instance('URL-container')" />
                      </xf:action>
                    </xf:trigger>
                  </td>
                  <td>
                  <xf:output ref="instance('domain')/system[@name = instance('results')/result/ServiceDefinition[index('link-repeat')]/SystemName]/NIC/@state" />
                  </td>
                </tr>
                </xf:repeat>
                </tbody>
    </table>
    </div>

问题似乎出在这一部分:

代码语言:javascript
复制
<td>
  <xf:output ref="instance('domain')/system[@name = instance('results')/result/ServiceDefinition[index('link-repeat')]/SystemName]/NIC/@state" />
</td>

这个表达式有什么问题吗?我希望获得与repeat语句中的当前节点相匹配的系统的状态属性。然而,当我加载页面时,‘results’实例由许多项组成,我得到一个Javascript错误:

代码语言:javascript
复制
A script on this page may be busy, or it may have stopped responding. You can stop the script now, or you can continue to see if the script will complete.
Script: http://test:8080/exist/xforms/xsltforms/xsltforms.js:771*

这条线(在本例中为771)总是不同的。

当结果实例非常小(最多20个元素)时,它会按预期工作。

任何帮助或建议,感谢,我是新手,所以请耐心等待。

EN

回答 1

Stack Overflow用户

发布于 2012-03-09 01:00:31

因为XSLTForms有自己的用JavaScript编写的XPath引擎,所以浏览器在计算需要浏览许多节点的表达式时可能会很慢,尤其是旧版本的Internet Explorer。

性能最近得到了改进,您应该尝试在sourceforge.net上使用XSLTForms的SVN仓库中的最新版本。

使用id()函数可以大大减少评估时间。

还有一个特定于XSLTForms的扩展,用于指示实例是否只包含只读数据。

你有没有尝试过分析器(先按F1键)来测量时间?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9616577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档