XML Schema validation error

后端 未结 3 1689
再見小時候
再見小時候 2021-01-07 15:57

I have my xml file as

 
 
 123
 qwe
 

        
相关标签:
3条回答
  • 2021-01-07 15:59

    At c2.xsd, line 22

             <xs:complexType>
               <xs:attribute name="URI" type="xs:string"/>
               <xs:element name="Transforms">
    

    xs:element cannot appear as a direct child of xs:complexType. It must be inside xs:all, xs:choice or xs:sequence.

    0 讨论(0)
  • 2021-01-07 16:21

    Your c2.xsd remains invalid, look on ComplexType definition:

    <complexType
      id=ID
      name=NCName
      abstract=true|false
      mixed=true|false
      block=(#all|list of (extension|restriction))
      final=(#all|list of (extension|restriction))
      any attributes
     >
    
     (annotation?,(simpleContent|complexContent|((group|all|
     choice|sequence)?,((attribute|attributeGroup)*,anyAttribute?))))
    
    </complexType>
    

    attribute must be defined after group, all, choice or sequence element, so change order in <xs:element name="Reference"> in order to define first <xs:all> and then <xs:attribute>:

          <xs:element name="Reference">
             <xs:complexType>
               <xs:all>
               <xs:element name="Transforms">
                 <xs:complexType>
                   <xs:sequence>
                     <xs:element name="Transform" type="xs:string">
                       <xs:complexType>
                         <xs:attribute name="Algorithm" type="xs:string" use="required"/>
                       </xs:complexType>
                      </xs:element>
                   </xs:sequence>
                 </xs:complexType>
               </xs:element>
               <xs:element name="DigestMethod">
                 <xs:complexType>
                   <xs:attribute name="Algorithm" type="xs:string" use="required"/>
                 </xs:complexType>
               </xs:element>
               <xs:element name="DigestValue" type="xs:hexBinary"/>
               </xs:all>
               <xs:attribute name="URI" type="xs:string"/>
             </xs:complexType>
            </xs:element>
    
    0 讨论(0)
  • 2021-01-07 16:22

    I tried out your file and managed to get it to validate against notepad++ doing a couple of things:

    1. Changed the xsd to use a reference to the imported signature xsd without any c:\reference. To do this I just copied that imported file to the same location as the xsd I was doing the importing from
    2. Changed the c2.xsd where you specify the ds to a different attribute namely dsig
    3. Downloaded the w3c version of the signature xsd from w3 Signature xsd and used that in the import (Step 1).
    4. Changed your output xml to include the xmlns="http://www.w3.org/2000/09/xmldsig#" line when specifying the signature.

    Note the xsd and xml I succeeded in validating in notepad++ below.

    XSD:

    <?xml version="1.0" encoding="utf-8" ?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" attributeFormDefault="unqualified">
    <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/>
    <xs:element name="Info">
      <xs:complexType>
    <xs:sequence>
          <xs:element name="Pan" type="xs:string"/>
          <xs:element name="Name" type="xs:string"/>
          <xs:element name="Email" type="xs:string"/>
          <xs:element name="City" type="xs:string"/>
          <xs:element name="State" type="xs:string"/>
          <xs:element name="AssessmentYear" type="xs:gYear"/>
          <xs:element name="MobileNo" type="xs:unsignedLong"/>
          <xs:element name="Income-Salary" type="xs:unsignedLong"/>
          <xs:element name="Income-Other" type="xs:unsignedLong"/>
          <xs:element name="TotalAmount" type="xs:unsignedLong"/>
          <xs:element ref="dsig:Signature" minOccurs="0" maxOccurs="1" />
    </xs:sequence>
      </xs:complexType>
    </xs:element>
    </xs:schema>
    

    And the XML:

    <?xml version="1.0" ?>
     <Info xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" >
     <Pan>123</Pan>
     <Name>qwe</Name>
     <Email>qwe</Email>
     <City>qwe</City>
     <State>qwe</State>
     <AssessmentYear>2012</AssessmentYear>
     <MobileNo>1234</MobileNo>
     <Income-Salary>1234</Income-Salary>
     <Income-Other>1234</Income-Other>
     <TotalAmount>122</TotalAmount>
    <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> 
    <SignedInfo>
     <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
     <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
     <Reference URI="">
     <Transforms>
     <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
     <Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116">
        <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
            <xsl:output method="text"/>
            <xsl:template match="/">
    Pan : <xsl:copy-of select="//Pan"/>
    
    MobileNo : <xsl:copy-of select="//MobileNo"/>
    
    TotalAmount : <xsl:copy-of select="//TotalAmount"/>
            </xsl:template>
        </xsl:stylesheet>
    </Transform>
    </Transforms>
    <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
    <DigestValue>FgbIIimTLIbd0Zpvq1zDrZse6aJg5bAE1/Q58cEkEvk=</DigestValue>
    </Reference>
     </SignedInfo>
    <SignatureValue>dy4QDco5NhXResncu0tUG5ylujDn9siIQSHjuX5HxH2gs70LpsO3KDWNvDXjpgkIySYfzJ/FdC6C
    trkSySWRjhObqI8cbcP5VU/nL8pP21+3CO+gF1k884aeX3felpRy0FBBMTYBknQTunWCHvpHk927
    ZHGvm6Hiej7iBKr3e1k=</SignatureValue>
    </Signature>
    </Info>
    
    0 讨论(0)
提交回复
热议问题