XML,如何改进这部分代码?

时间:2017-06-15 06:39:01

标签: xml openstreetmap geoserver

我在地理服务器上做彩色地图,并且需要检查所有建筑物是否都是灰色,但并非所有建筑物都有"是"领域"建筑",有些在" landuse"中有不同的关键词。领域。 如果我以这种方式编码,我就错了:

  

第72行:cvc-complex-type.2.4.a:从元素'和'开始发现无效内容。其中一个' {" www.opengis.net/ogc" ;:comparativeOps," www opengis net / ogc":spatialOps," www opengis net / ogc&#34 ;:logicOps}'是期待。 (不能放链接)

代码:

 <Rule>
               <ogc:Filter>
               <ogc:Or>

              <ogc:PropertyIsEqualTo>
                <ogc:PropertyName>building</ogc:PropertyName>
                <ogc:Literal>yes</ogc:Literal>
              </ogc:PropertyIsEqualTo>

              <And>
                <And>
                  <And>
                    <And>
                      <And>
                        <And>
                     <ogc:PropertyIsEqualTo>
                <ogc:PropertyName>landuse</ogc:PropertyName>
                <ogc:Literal>basin</ogc:Literal>
              </ogc:PropertyIsEqualTo>
                      <ogc:PropertyIsEqualTo>
                <ogc:PropertyName>landuse</ogc:PropertyName>
                <ogc:Literal>farmland</ogc:Literal>
              </ogc:PropertyIsEqualTo>
              </And>
                         <ogc:PropertyIsEqualTo>
                <ogc:PropertyName>landuse</ogc:PropertyName>
                <ogc:Literal> forest </ogc:Literal>
              </ogc:PropertyIsEqualTo>
                      <ogc:PropertyIsEqualTo>
                <ogc:PropertyName>landuse</ogc:PropertyName>
                <ogc:Literal>grass</ogc:Literal>
              </ogc:PropertyIsEqualTo>
              </And>
                <ogc:PropertyIsEqualTo>
                <ogc:PropertyName>landuse</ogc:PropertyName>
                <ogc:Literal>greenhouse_horticulture</ogc:Literal>
              </ogc:PropertyIsEqualTo>
                      <ogc:PropertyIsEqualTo>
                <ogc:PropertyName>landuse</ogc:PropertyName>
                <ogc:Literal>landfill</ogc:Literal>
              </ogc:PropertyIsEqualTo>
              </And>
               <ogc:PropertyIsEqualTo>
                <ogc:PropertyName>landuse</ogc:PropertyName>
                <ogc:Literal>meadow</ogc:Literal>
              </ogc:PropertyIsEqualTo>
                      <ogc:PropertyIsEqualTo>
                <ogc:PropertyName>landuse</ogc:PropertyName>
                <ogc:Literal>orchard</ogc:Literal>
              </ogc:PropertyIsEqualTo>
              </And>
              <ogc:PropertyIsEqualTo>
                <ogc:PropertyName>landuse</ogc:PropertyName>
                <ogc:Literal>plant_nursery </ogc:Literal>
              </ogc:PropertyIsEqualTo>
                      <ogc:PropertyIsEqualTo>
                <ogc:PropertyName>landuse</ogc:PropertyName>
                <ogc:Literal>recreation_ground </ogc:Literal>
              </ogc:PropertyIsEqualTo>
              </And>
              <ogc:PropertyIsEqualTo>
                <ogc:PropertyName>landuse</ogc:PropertyName>
                <ogc:Literal>village_green</ogc:Literal>
              </ogc:PropertyIsEqualTo>
                      <ogc:PropertyIsEqualTo>
                <ogc:PropertyName>landuse</ogc:PropertyName>
                <ogc:Literal>vineyard</ogc:Literal>
              </ogc:PropertyIsEqualTo>
              </And>

            </ogc:Or>

      </ogc:Filter>

      <PolygonSymbolizer>
        <Fill>
          <CssParameter name="fill">
            <ogc:Literal>#A5A5A5</ogc:Literal>
          </CssParameter>
          <CssParameter name="fill-opacity">
            <ogc:Literal>1.0</ogc:Literal>
          </CssParameter>
        </Fill>
        <Stroke>
          <CssParameter name="stroke">
            <ogc:Literal>#6E6E6E</ogc:Literal>
          </CssParameter>


        </Stroke>
      </PolygonSymbolizer>
    </Rule>

1 个答案:

答案 0 :(得分:2)

<And>元素也必须使用ogc命名空间。您必须将<And>替换为<ogc:And>(当然也包括结束标记)。