XML Schema validation error(XML 模式验证错误)
问题描述
我的 xml 文件为
<?xml version="1.0" encoding="ISO-8859-1"?>
<Info>
<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>
<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>
我的这个xml文件的Schema文件如下(c1.xsd)
My Schema files for this xml file is as follows(c1.xsd)
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="C:\xml\c2.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="ds:Signature"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
c2.xsd(已编辑)
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3.org/2000/09/xmldsig#">
<xs:element name="Signature">
<xs:complexType>
<xs:sequence>
<xs:element name="SignedInfo">
<xs:complexType>
<xs:sequence>
<xs:element name="CanonicalizationMethod">
<xs:complexType>
<xs:attribute name="Algorithm" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="SignatureMethod">
<xs:complexType>
<xs:attribute name="Algorithm" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="Reference">
<xs:complexType>
<xs:attribute name="URI" type="xs:string"/>
<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:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SignatureValue" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
当我验证我的 xml 文件时,我得到以下异常
When I validate my xml file i get the following Exception
org.xml.sax.SAXParseException; systemId: file:/C://xml//c2.xsd; lineNumber: 22;
columnNumber: 37; s4s-elt-invalid-content.1: The content of '#AnonType_Reference
SignedInfoSignature' is invalid. Element 'element' is invalid, misplaced, or oc
curs too often.
我不知道我哪里出错了?谁能告诉我代码中的错误到底在哪里?
编辑 1 后出错
org.xml.sax.SAXParseException; systemId: file:/C://xml//c2.xsd; lineNumber: 22;
columnNumber: 15; s4s-elt-invalid-content.1: The content of '#AnonType_Reference
SignedInfoSignature' is invalid. Element 'all' is invalid, misplaced, or occurs
too often.
推荐答案
在c2.xsd,第22行
At c2.xsd, line 22
<xs:complexType>
<xs:attribute name="URI" type="xs:string"/>
<xs:element name="Transforms">
xs:element
不能作为 xs:complexType
的直接子级出现.它必须在 xs:all
、xs:choice
或 xs:sequence
内.
xs:element
cannot appear as a direct child of xs:complexType
. It must be inside xs:all
, xs:choice
or xs:sequence
.
这篇关于XML 模式验证错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:XML 模式验证错误


基础教程推荐
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01
- 设置 bean 时出现 Nullpointerexception 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- Java:带有char数组的println给出乱码 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- 降序排序:Java Map 2022-01-01