这是我的xml文件:在使用查询类型xml编写正确的xpath表达式时需要帮助
<?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树:
<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>我无法编写适当的查询来根据域来谈论电子邮件的值。请帮帮我……我在这里编辑了前面的问题。
发布于 2011-06-22 14:45:47
通常的方法是使用XML模板并自动生成树内容,请参阅https://developer.mozilla.org/en/XUL/Template_Guide/XML_Templates和https://developer.mozilla.org/en/XUL/Template_Guide/XML_Assignments。在您的例子中,它的工作方式如下:
<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的联系人。
https://stackoverflow.com/questions/6426658
复制相似问题