我正在使用2个xml文件 - “Department.xml”和“Employee.xml”。
Department.xml
<DeptList xsi:noNamespaceSchemaLocation="officeSchema.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Department>
<deptName>mech</deptName>
<deptNo>module1</deptNo>
<deptManagerSSN>31001</deptManagerSSN>
<deptManagerStartDate>2013-01-26</deptManagerStartDate>
<deptLocation>near xyz road</deptLocation>
</Department>
<Department>
<deptName>it</deptName>
<deptNo>module2</deptNo>
<deptManagerSSN>32001</deptManagerSSN>
<deptManagerStartDate>2013-04-15</deptManagerStartDate>
<deptLocation>near wt road</deptLocation>
</Department>
</DeptList>
Employee.xml
<EmpList xsi:noNamespaceSchemaLocation="officeSchema.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Employee>
<empName>Ramesh</empName>
<empSSN>31001</empSSN>
<empSex>Male</empSex>
<empSalary>57000</empSalary>
<empBirthDate>1988-03-12</empBirthDate>
<empDeptNo>module1</empDeptNo>
<empSupervisorSSN>31001</empSupervisorSSN>
<empAddress>3-f, x.y.z colony</empAddress>
<empWorksOn>proj01</empWorksOn>
</Employee>
<Employee>
<empName>Raj</empName>
<empSSN>31002</empSSN>
<empSex>Male </empSex>
<empSalary>40000</empSalary>
<empBirthDate>1989-03-30</empBirthDate>
<empDeptNo>Module1</empDeptNo>
<empSupervisorSSN>31001</empSupervisorSSN>
<empAddress>6-A, w.t.c. colony
</empAddress>
<empWorksOn>proj01</empWorksOn>
</Employee>
</EmpList>
我想要的是,如果“deptManagerSSN”等于“empSSN”,则打印“empName”,否则打印“deptName”。为此我写了以下查询:
for $x in doc("C:/Users/Abhay/labWork/Department.xml")/DeptList/Department,
$y in doc("C:/Users/Abhay/labWork/Department.xml")/EmpList/Employee
return if(data($x/deptManagerSSN)=data($y/empSSN))
then <text1>{data($y/emptName)}</text1>
else <text1>{data($x/deptName)}</text1>
但我没有得到任何输出。我也没有收到任何错误。请告诉我在查询中出错的地方。 我使用“xml editix”作为xml引擎。 对不起,如果我的问题很愚蠢,我是xml新手。
答案 0 :(得分:0)
似乎你的逻辑非常正确。也许替换
doc("C:/Users/
与
doc("/C:/Users/
会解决你的问题吗?