kml 默认命名空间与数据集默认命名空间冲突

kml default namespace conflict with data set default namespace

我有一个澳大利亚厕所列表,我想使用 xQuery 将其映射到 GE 以转换为 KML 文档。我使用的数据集有一个默认名称space xmlns="http://toiletmap.gov.au/".

当我执行 xQuery 传输时,我能够根据需要提取 coordinates/name/description。但是该文档不是有效的 KML 文档,因为我没有使用 xmlns="http://earth.google.com/kml/2.1".

的 kml 默认名称space

我该如何合并这两个名字space?如果我省略名称 space,则 xQuery 转换为空白,无法提取所需数据。

我考虑过添加前缀,例如 xmlns:au="http://toiletmap.gov.au/"。但这并没有帮助,即使我这样命名 {data($x/Name)} 元素。

请告诉我我做错了什么,我觉得我还没有完全理解 namespace 的工作原理。

这是 xQuery:

<kml xmlns="http://toiletmap.gov.au/">
 <Document>
    <Folder>
        {
          let $doc := doc("ToiletmapExport_180801_090000.xml")
          for $x in $doc/ToiletMapExport/ToiletDetails
           where $x/@Latitude <= (-34.74526121+0.25) 
                     and $x/@Latitude >= (-34.74526121-0.25)
                     and $x/@Longitude >= (146.5505775-0.25)
                     and $x/@Longitude <= (146.5505775+0.25)
                     return if (($x/AccessibilityDetails/AccessibleMale='true'
                     and $x/AccessibilityDetails/AccessibleFemale='true')
                     or $x/AccessibilityDetails/AccessibleUnisex='true') 
                     then
                <Placemark>
                    <name >{data($x/Name)}</name>
                    <description>FacilityType: {data($x/GeneralDetails/FacilityType)}<br></br>
                    Town: {data($x/Town)}<br></br>
                    Male: {data($x/AccessibilityDetails/AccessibleMale)} Female: {data($x/AccessibilityDetails/AccessibleFemale)}<br></br>
                    Unisex: {data($x/AccessibilityDetails/AccessibleUnisex)}
                    </description>
                    <Point>
                        <coordinates>{data($x/@Longitude)},{data($x/@Latitude)}</coordinates>
                    </Point>
                </Placemark>
                else ()
        }
    </Folder>
 </Document>

您还没有真正显示输入示例,但是在使用 XPath 和 XQuery 时,命名空间中 select 节点的任何路径表达式不必使用相同的前缀或默认命名空间(即没有前缀) 到来自某个命名空间的 select 个节点,重要的是为正确的命名空间声明一个特定的前缀,例如declare namespace toi = "http://toiletmap.gov.au/"; 然后将该前缀与例如$doc/au:ToiletMapExport/au:ToiletDetails 在您要从该名称空间 select 输入的所有路径表达式中。对于输出,您可以设置 KML 命名空间。