以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 DTD/XML Schema 』  (http://bbs.xml.org.cn/list.asp?boardid=23)
----  使用XSD验证XML命名空间的问题  (http://bbs.xml.org.cn/dispbbs.asp?boardid=23&rootid=&id=22536)


--  作者:xiangxiang2000
--  发布时间:9/26/2005 10:56:00 AM

--  使用XSD验证XML命名空间的问题
需要验证的XML文档是:
<?xml version="1.0" encoding="UTF-8"?>
<?mso-infoPathSolution name="urn:schemas-microsoft-com:office:infopath:-R3:-dataFormSolution" href="manifest.xsf" solutionVersion="1.0.0.1" initialView="ͼ 1" productVersion="11.0.6357" PIVersion="1.0.0.0" ?>
<?mso-application progid="InfoPath.Document"?>
<dfs:myFields xmlns:q="http://schemas.microsoft.com/office/infopath/2003/ado/queryFields" xmlns:d="http://schemas.microsoft.com/office/infopath/2003/ado/dataFields" xmlns:dfs="http://schemas.microsoft.com/office/infopath/2003/dataFormSolution" xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2005-09-23T03:08:51">
 <dfs:queryFields>
  <q:Student Id="" Name=""></q:Student>
  <q:XueLiCode XueLiID="" XueLiName=""></q:XueLiCode>
 </dfs:queryFields>
 <dfs:dataFields>
  <d:Student Id="" Name="">
   <d:XueLiCode XueLiID="" XueLiName=""></d:XueLiCode>
  </d:Student>
 </dfs:dataFields>
</dfs:myFields>
我写的XSD文档:
<?xml version="1.0" encoding="utf-8" ?>
<xsd:schema targetNamespace="http://schemas.microsoft.com/office/infopath/2003/dataFormSolution" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:q="http://leading/infopath/2003/ado/queryFields" xmlns:d="http://leading/infopath/2003/ado/dataFields" xmlns:dfs="http://schemas.microsoft.com/office/infopath/2003/dataFormSolution" >
 <xsd:element name="MyFields">
  <xsd:complexType>
   <xsd:sequence>
    <xsd:element name="queryFields">
     <xsd:complexType>
      <xsd:sequence>
       <xsd:element name="Student">
        <xsd:complexType>
         <xsd:attribute name="Id" />
         <xsd:attribute name="Name"/>
        </xsd:complexType>
       </xsd:element>
       <xsd:element name="XueLiCode">
        <xsd:complexType>
         <xsd:attribute name="XueLiID"/>
         <xsd:attribute name="XueLiName"/>
        </xsd:complexType>
       </xsd:element>
      </xsd:sequence>
     </xsd:complexType>
    </xsd:element>
    <xsd:element name="dataFields">
     <xsd:complexType>
      <xsd:sequence>
       <xsd:element name="Student">
        <xsd:complexType>
         <xsd:sequence>
          <xsd:element name="XueLiCode">
           <xsd:complexType>
            <xsd:attribute name="XueLiID" />
            <xsd:attribute name="XueLiName"/>
           </xsd:complexType>
          </xsd:element>
         </xsd:sequence>
         <xsd:attribute name="Id"/>
         <xsd:attribute name="Name"/>
        </xsd:complexType>
       </xsd:element>
      </xsd:sequence>
     </xsd:complexType>
    </xsd:element>
   </xsd:sequence>
  </xsd:complexType>
    </xsd:element>
</xsd:schema>


我现在出现的问题是,我怎么在这个XSD中去验证XML的命名空间前缀呀?象dfs,q,d.


--  作者:coolstar1204
--  发布时间:12/21/2005 11:25:00 AM

--  
你这个xsd是自己手工打出来的还是工具生成的。。。。
--  作者:flyfoxs
--  发布时间:12/31/2005 7:39:00 PM

--  
我也想知道,怎么没有人回答啊!
--  作者:98900969r
--  发布时间:1/2/2006 5:49:00 AM

--  
对这个实例XML文件,它的验证至少涉及到3个schemas,因为它用到了dfs, q, d这三个命名空间。此外它还声明了前缀my,但实际上没有用到。这三个涉及到schemas应分别定义了dfs, q, d这三个命名空间的元素。
如果是要自己写schema(s)来验证这个实例XML文件,就至少得写3个schemas。一个定义q中的Student和XueliCode元素;一个定义d中的Student和XueliCode元素;还有一个定义dfs中的myFields和queryFields元素。最后这个中,要引进(import)前两个,然后引用其中定义的元素,这通过<xs:element ref="???"/>来实现。
--  作者:foxmishy
--  发布时间:7/10/2006 9:54:00 AM

--  
支持,楼上的好厉害哦!学习中!
--  作者:weqdd
--  发布时间:7/14/2006 11:37:00 AM

--  
受益非浅
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
50.781ms