首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在XUL树中从多个带条件查询类型xml中选择单个属性值

在XUL树中从多个带条件查询类型xml中选择单个属性值
EN

Stack Overflow用户
提问于 2011-06-21 22:08:49
回答 1查看 692关注 0票数 0

这是我的xml文件:在使用查询类型xml编写正确的xpath表达式时需要帮助

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<CONTACTS>
<CONTACT>
<PDE-Identity>N65539</PDE-Identity>
<FirstName>Arun_niit</FirstName>
<LastName>Arun_niit</LastName>
<Facebook-ID/>
<EMAILS>
<EMail Domain="yahoo" Value="nura_e@yahoo.co.in"/>
</EMAILS>
</CONTACT>
<CONTACT>
<PDE-Identity>N65553</PDE-Identity>
<FirstName>GhorbelMahmoud</FirstName>
<LastName>Mahmoud Ghorbel</LastName>
<Facebook-ID/>
<EMAILS>
<EMail Domain="alcatel-lucent" Value="mahmoud.gbel@alcatel-lucent.com"/>
</EMAILS>
</CONTACT>
<CONTACT>
<PDE-Identity>N65560</PDE-Identity>
<FirstName>keyankarthik</FirstName>
<LastName>karthik keyan</LastName>
<Facebook-ID/>
<EMAILS>
<EMail Domain="yahoo" Value="kartse@yahoo.co.in"/>
</EMAILS>
</CONTACT>
<CONTACT>
<PDE-Identity>N65567</PDE-Identity>
<FirstName>Rangarajkarthik</FirstName>
<LastName>karthik Rangaraj</LastName>
<Facebook-ID/>
<EMAILS>
<EMail Domain="gmail" Value="kart2006@gmail.com"/>
<EMail Domain="yahoo" Value="karthikngaraj@yahoo.com"/>
</EMAILS>
</CONTACT>
<CONTACT>
<PDE-Identity>N65576</PDE-Identity>
<FirstName>ReddyAkky</FirstName>
<LastName>Akky Reddy</LastName>
<Facebook-ID/>
<EMAILS>
<EMail Domain="gmail" Value="akkddych@gmail.com"/>
</EMAILS>
</CONTACT>
<CONTACT>
<PDE-Identity>N65597</PDE-Identity>
<FirstName>KumarVeera</FirstName>
<LastName>Veera_Kumar</LastName>
<Facebook-ID/>
<EMAILS>
<EMail Domain="yahoo" Value="KUMRg_81@yahoo.com"/>
</EMAILS>
</CONTACT>
</CONTACTS>

我的xul树:

代码语言:javascript
复制
<treechildren datasources="file://D:/xmlparserinxul/finalxmlonfriday.xml" ref="*" querytype="xml">
   <template>
     <query expr="CONTACT">
       <assign var="?pde" expr="PDE-Identity"/>
       <assign var="?fname" expr="FirstName"/>
       <assign var="?lname" expr="LastName"/>
       <assign var="?gmail" expr="EMAILS/EMail/@Domain='gmail'|EMail/@Value"/>
       <assign var="?yahoo" expr="EMAILS/EMail/@Domain='yahoo'|EMail/@Value"/>
       <assign var="?alcatel-lucent" expr="EMAILS/EMail/@Domain='alcatel-lucent'|EMail/@Value"/>
       <assign var="?facebook" expr="URL"/>
       <assign var="?id" expr="Facebook-ID"/>
    </query>
     <action>
       <treeitem uri="?">
         <treerow>
           <treecell label="?pde"/>
           <treecell label="?fname"/>
           <treecell label="?lname"/>
           <treecell label="?gmail"/>
           <treecell label="?yahoo"/>
           <treecell label="?alcatel-lucent"/>
           <treecell label="?facebook" editable="false"/>
           <treecell label="?id" editable="false"/>
         </treerow>
       </treeitem>
     </action>
   </template>
 </treechildren>

 </tree>

我无法编写适当的查询来根据域来谈论电子邮件的值。请帮帮我……我在这里编辑了前面的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-22 14:45:47

通常的方法是使用XML模板并自动生成树内容,请参阅https://developer.mozilla.org/en/XUL/Template_Guide/XML_Templateshttps://developer.mozilla.org/en/XUL/Template_Guide/XML_Assignments。在您的例子中,它的工作方式如下:

代码语言:javascript
复制
 <treechildren datasources="file:///D:/FinalXMl.xml" ref="*" querytype="xml">
   <template>
     <query expr="CONTACT">
       <assign var="?fname" expr="FirstName"/>
       <assign var="?lname" expr="LastName"/>
       <assign var="?gmail" expr="EMAILS/EMail[Type='gmail']/Value"/>
       <assign var="?yahoo" expr="EMAILS/EMail[Type='yahoo']/Value"/>
       <assign var="?facebook" expr="Facebook-ID"/>
     </query>
     <action>
       <treeitem uri="?">
         <treerow>
           <treecell label="?fname"/>
           <treecell label="?lname"/>
           <treecell label="?gmail"/>
           <treecell label="?yahoo"/>
           <treecell label=""/>
           <treecell label="?facebook"/>
         </treerow>
       </treeitem>
     </action>
   </template>
 </treechildren>

请注意,如果您可以更改<assign>格式,这将更容易(不需要XML标记)。如果将所有数据放入<CONTACT>标记的属性中,则无需显式分配变量即可访问这些数据。

看起来您最终想要实现树的动态过滤,这应该通过动态更改<query>标记的expr属性来实现。您可以使用任何XPath表达式,例如,expr="CONTACT[FirstName='Bob']"将仅选择FirstName子项具有值Bob的联系人。

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

https://stackoverflow.com/questions/6426658

复制
相关文章

相似问题

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