以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 DTD/XML Schema 』  (http://bbs.xml.org.cn/list.asp?boardid=23)
----  求助,xml的xsd验证中能否根据某节点的属性值来调用相应的compleType  (http://bbs.xml.org.cn/dispbbs.asp?boardid=23&rootid=&id=61937)


--  作者:hnyashiro
--  发布时间:4/28/2008 3:07:00 PM

--  求助,xml的xsd验证中能否根据某节点的属性值来调用相应的compleType
<?xml version="1.0" encoding="UTF-8"?>
<ActiveConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="..\Schema\ActiveConfig.xsd">
 <DBConfig>
  <DB Type="MySQL">
   <Host>127.0.0.1</Host>
   <Port>3306</Port>
   <DBName>ZT_Customer</DBName>
   <Username>root</Username>
   <Password></Password>
  </DB>
 </DBConfig>
这里,我的DB,可能是MSQL,可能是MySQL,也可能是Oracle,我希望在schema验证时,通过对DB的Type属性来决定调用何种类型的CompleType!不知道这样可不可以


<xs:element name="ActiveConfig">
  <xs:annotation>
   <xs:documentation>PHP AJax Http Request Configuration File</xs:documentation>
  </xs:annotation>
  <xs:complexType>
   <xs:all>
    <xs:element name="DBConfig">
     <xs:complexType>
      <xs:choice>
       <xs:element name="DB" type="MySQL"/>
      </xs:choice>
     </xs:complexType>
    </xs:element>
....
<xs:complexType name="MySQL">
  <xs:sequence>
   <xs:element name="Host" type="TypeHost"/>
   <xs:element name="Port" type="xs:integer"/>
   <xs:element name="DBName" type="xs:string"/>
   <xs:element name="Username" type="xs:string"/>
   <xs:element name="Password" type="xs:string"/>
  </xs:sequence>
 </xs:complexType>
 <xs:complexType name="MSSQL">
  <xs:sequence>
   <xs:element name="Host" type="TypeHost"/>
   <xs:element name="Port" type="xs:integer"/>
   <xs:element name="DBName" type="xs:string"/>
   <xs:element name="Username" type="xs:string"/>
   <xs:element name="Password" type="xs:string"/>
  </xs:sequence>
 </xs:complexType>
 <xs:simpleType name="TypeHost">
  <xs:restriction base="xs:string">
   <xs:pattern value="\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"/>
  </xs:restriction>
 </xs:simpleType>


--  作者:qinglongren
--  发布时间:4/29/2008 9:34:00 AM

--  

是不是可以定义一个属性在mysql里面。
<xsd:attribute name="dbtype" type="dbtype">

<xsd:simplytype name="dbtype">
<xsd:restriction base="xsd:string">
<xsd:enumration value="mysql"/>
<xsd:enumration value="mssql"/>
<xsd:enumration value="oraclel"/>
<xsd:enumration value="db2"/>
</xsd:restriction>
</xsd:simplytype>


--  作者:hnyashiro
--  发布时间:4/30/2008 3:32:00 PM

--  
to: qinglongren
谢谢你的回复,你的方法是指定DB的类型,但是在这个节点下的子节点不是没办法验证了吗?
Access的可能只有一个ConnString节点,mssql,mysql有host port user pwd等信息
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
31.250ms