Xquery 中的 NameSpace 导入问题
Issues with NameSpace import in Xquery
我正在尝试导入我的命名空间,但由于某种原因它不会让步。
我试过这个以及添加路径
import schema namespace r = "http://www.w3.org/2001/XMLSchema" at "Assignment-Xquery3.xsd";
我不断收到此错误:
Error in schema http://www.w3.org/2001/XMLSchema: No valid schema was found
我也厌倦了“-Instance”,但没有运气。我是 运行 Saxon EE。我试图添加我的文件路径。不知道怎么回事,这是我老师给我们的模板。
我的其余代码(如果需要):
import schema namespace r = "http://www.w3.org/2001/XMLSchema" at "Assignment-Xquery3.xsd";
<provider>{
for $r in
distinc-values(doc("instance.xml")/r:patient/r:treatment/r:provider)
return
<info>
<patient>{string($r)}</patient>
{for $rr in doc("instance.xml"/r:patient
where $r = $rr/r:treatment}
return
<treatment>
<id>{$rr/r:id/text()}</id>
<diagnosis>{$rr/r:diagnosis/text()}</diagnosis>
<drug>{$rr/r:drug/text()}</drug>
</treatment>
</info>
}</provider>
不太清楚你想达到什么目的,但很清楚你做错了什么。
写的时候
import schema namespace r = "http://www.w3.org/2001/XMLSchema" at "Assignment-Xquery3.xsd";
你是
(a) 尝试在位置 "Assignment-Xquery3.xsd" 加载模式。那可能没问题;我敢说那个位置可能有一个有效的模式。
(b) 断言该位置的模式具有目标名称空间“http://www.w3.org/2001/XMLSchema”。这似乎不太可能,因为用户编写的应用程序不太可能想要访问架构文档的架构。
(c) 将前缀 "r" 绑定到该命名空间。这似乎再次令人难以置信,(i) 因为人们通常使用该名称空间的前缀是 "xs" 或 "xsd",并且 (ii) 因为您继续使用名称 r:treatment
,并且在这个名称空间中肯定没有本地名称为 "treatment".
的名称
虽然我不能确定,但我强烈怀疑您根本不想导入架构;您只想将前缀 "r" 绑定到某个命名空间(可能是 http://www.example.org/review
,但我们不能确定)。如果是这样的话,那么你只需要
declare namespace r = "http://www.example.org/review";
我正在尝试导入我的命名空间,但由于某种原因它不会让步。 我试过这个以及添加路径
import schema namespace r = "http://www.w3.org/2001/XMLSchema" at "Assignment-Xquery3.xsd";
我不断收到此错误:
Error in schema http://www.w3.org/2001/XMLSchema: No valid schema was found
我也厌倦了“-Instance”,但没有运气。我是 运行 Saxon EE。我试图添加我的文件路径。不知道怎么回事,这是我老师给我们的模板。
我的其余代码(如果需要):
import schema namespace r = "http://www.w3.org/2001/XMLSchema" at "Assignment-Xquery3.xsd";
<provider>{
for $r in
distinc-values(doc("instance.xml")/r:patient/r:treatment/r:provider)
return
<info>
<patient>{string($r)}</patient>
{for $rr in doc("instance.xml"/r:patient
where $r = $rr/r:treatment}
return
<treatment>
<id>{$rr/r:id/text()}</id>
<diagnosis>{$rr/r:diagnosis/text()}</diagnosis>
<drug>{$rr/r:drug/text()}</drug>
</treatment>
</info>
}</provider>
不太清楚你想达到什么目的,但很清楚你做错了什么。
写的时候
import schema namespace r = "http://www.w3.org/2001/XMLSchema" at "Assignment-Xquery3.xsd";
你是
(a) 尝试在位置 "Assignment-Xquery3.xsd" 加载模式。那可能没问题;我敢说那个位置可能有一个有效的模式。
(b) 断言该位置的模式具有目标名称空间“http://www.w3.org/2001/XMLSchema”。这似乎不太可能,因为用户编写的应用程序不太可能想要访问架构文档的架构。
(c) 将前缀 "r" 绑定到该命名空间。这似乎再次令人难以置信,(i) 因为人们通常使用该名称空间的前缀是 "xs" 或 "xsd",并且 (ii) 因为您继续使用名称 r:treatment
,并且在这个名称空间中肯定没有本地名称为 "treatment".
虽然我不能确定,但我强烈怀疑您根本不想导入架构;您只想将前缀 "r" 绑定到某个命名空间(可能是 http://www.example.org/review
,但我们不能确定)。如果是这样的话,那么你只需要
declare namespace r = "http://www.example.org/review";