我觉得一个标签既然有相同的tagname,就应该有相同的结果.
既然你的不同参数有不同的枚举,那么你的参数应该是固定的吧,所以你的xml可以考虑换一种设计方式
<book> 
<params>
  <bookname>xxx</bookname>
  <vendor>xxx</bookname>
  <contry>xxx</bookname>
</params>
</book> 

解决方案 »

  1.   

    换句话说,你想根据元素中name属性的取值来决定标签体中的内容。
    目前的Schema能达到你的要求吗?反正我以前是没这么做过……
      

  2.   

    嗯,我也认为应该换XML的设计,不过这个xml是其他项目的,我要接着他的项目做外延项目,需要分析他的这个xml,让人家更改结构是不可能了……
      

  3.   

    那你一定要一个非常精准的Schema吗?我对Schema也不是非常地精通,暂时写不出符合你要求的Schema.
    我目前提供的参考解决方案是:
    1、写个迁就一点的Schema
    2、更严格的有效性验证在程序代码中实现我给写了一个简单的Schema,如下:<?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:element name="book"> 
    <xs:complexType>
    <xs:sequence>
    <xs:element name="param" maxOccurs="3"> 
    <xs:complexType>
    <xs:simpleContent>
    <xs:extension base="xs:string">
    <xs:attribute name="name" type="xs:string" />
    </xs:extension>
    </xs:simpleContent>
    </xs:complexType>
    </xs:element>
    </xs:sequence> 
    </xs:complexType>
    </xs:element>
    </xs:schema>
      

  4.   

    谢谢楼上,这样肯定是能验证通过的,不过这样就没有意义了,这个schma除了具有验证功能以外,还要通过dom读出它的可选项,然后按照下拉菜单把它的可选项选出来
    所以,还是不行哈,但是还是谢谢楼上了