Note that there are some explanatory texts on larger screens.

plurals
  1. POWhy does XSD validation always work for this file?
    primarykey
    data
    text
    <p>The following xml file always seems to validate. Not sure why, but when I remove the following ' xmlns="urn:schemas-microsoft-com:office:spreadsheet" ', it seems to throw a validation error as expected.</p> <p>Somehow MS is preventing validation with the added XSD <strong>office</strong> schema. So anytime that XSD Schema is included you can't validate XML using the .NET framework.</p> <pre><code>Option Strict On Option Explicit On Imports System.IO Imports System.Xml Imports System.Xml.Schema Imports System.Text Public Class XMLValidator2 Private _isValid As Boolean = False 'Validation Error Count Private _ErrorsCount As Integer = 0 'Validation Error Message Private _ErrorMessage As String = "" 'Declare local objects Private _tr As XmlTextReader Private _xr As XmlTextReader Private _xsc As XmlSchemaSet Private _vr As XmlReader Public Sub Validate(ByVal strXMLDocPath As String, ByVal strXSDPath As String) Try _isValid = False 'Text reader object _tr = New XmlTextReader(strXSDPath) _xsc = New XmlSchemaSet _xsc.Add("", _tr) 'Validator Object Dim settings As New XmlReaderSettings() settings.Schemas.Add(_xsc) settings.ValidationType = ValidationType.Schema 'Add validation event handler AddHandler settings.ValidationEventHandler, AddressOf Me.ValidationHandler _vr = XmlReader.Create(strXMLDocPath, settings) _ErrorsCount = 0 _ErrorMessage = "" 'Validate XML data While (_vr.Read()) End While _vr.Close() ' Raise exception, if XML validation fails If (_ErrorsCount &gt; 0) Then Throw New Exception(_ErrorMessage) 'XML Validation succeeded _isValid = True Catch ex As System.Exception 'XML Validation failed Throw New Exception(ex.Message) End Try End Sub Private Sub ValidationHandler(ByVal sender As Object, ByVal args As ValidationEventArgs) _ErrorMessage = _ErrorMessage + args.Message + "\r\n" _ErrorsCount = +1 End Sub Public ReadOnly Property bIsValid() As Boolean Get Return _isValid End Get End Property End Class &lt;?xml version="1.0"?&gt; &lt;?mso-application progid="Excel.Sheet"?&gt; &lt;Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40"&gt; &lt;DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"&gt; &lt;LastAuthor&gt;KLIMMPI&lt;/LastAuthor&gt; &lt;Created&gt;2009-06-04T13:49:21Z&lt;/Created&gt; &lt;LastSaved&gt;2009-06-04T16:10:37Z&lt;/LastSaved&gt; &lt;Version&gt;11.9999&lt;/Version&gt; &lt;/DocumentProperties&gt; &lt;OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office"&gt; &lt;Colors&gt; &lt;Color&gt; &lt;Index&gt;17&lt;/Index&gt; &lt;RGB&gt;#663399&lt;/RGB&gt; &lt;/Color&gt; &lt;Color&gt; &lt;Index&gt;39&lt;/Index&gt; &lt;RGB&gt;#E3E3E3&lt;/RGB&gt; &lt;/Color&gt; &lt;Color&gt; &lt;Index&gt;45&lt;/Index&gt; &lt;RGB&gt;#FF3300&lt;/RGB&gt; &lt;/Color&gt; &lt;/Colors&gt; &lt;/OfficeDocumentSettings&gt; &lt;ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"&gt; &lt;WindowHeight&gt;8790&lt;/WindowHeight&gt; &lt;WindowWidth&gt;30840&lt;/WindowWidth&gt; &lt;WindowTopX&gt;480&lt;/WindowTopX&gt; &lt;WindowTopY&gt;90&lt;/WindowTopY&gt; &lt;ProtectStructure&gt;False&lt;/ProtectStructure&gt; &lt;ProtectWindows&gt;False&lt;/ProtectWindows&gt; &lt;/ExcelWorkbook&gt; &lt;Styles&gt; &lt;Style ss:ID="Default" ss:Name="Normal"&gt; &lt;Alignment ss:Vertical="Bottom"/&gt; &lt;Borders/&gt; &lt;Font/&gt; &lt;Interior/&gt; &lt;NumberFormat/&gt; &lt;Protection/&gt; &lt;/Style&gt; &lt;Style ss:ID="s22" ss:Name="Normal_Not 8 Counts"&gt; &lt;Alignment ss:Vertical="Bottom"/&gt; &lt;Borders/&gt; &lt;Font ss:FontName="Arial "/&gt; &lt;Interior/&gt; &lt;NumberFormat/&gt; &lt;Protection/&gt; &lt;/Style&gt; &lt;Style ss:ID="s24"&gt; &lt;Font ss:Bold="1"/&gt; &lt;/Style&gt; &lt;Style ss:ID="s25" ss:Parent="s22"&gt; &lt;Alignment ss:Horizontal="Right" ss:Vertical="Center"/&gt; &lt;Borders/&gt; &lt;Font ss:FontName="Arial "/&gt; &lt;Interior/&gt; &lt;NumberFormat/&gt; &lt;/Style&gt; &lt;Style ss:ID="s26" ss:Parent="s22"&gt; &lt;Alignment ss:Horizontal="Left" ss:Vertical="Center"/&gt; &lt;Borders/&gt; &lt;Font ss:FontName="Arial "/&gt; &lt;Interior/&gt; &lt;NumberFormat/&gt; &lt;/Style&gt; &lt;Style ss:ID="s27"&gt; &lt;Borders/&gt; &lt;Font ss:Bold="1"/&gt; &lt;Interior/&gt; &lt;/Style&gt; &lt;Style ss:ID="s28"&gt; &lt;Borders/&gt; &lt;Interior/&gt; &lt;/Style&gt; &lt;Style ss:ID="s29"&gt; &lt;Alignment ss:Horizontal="Right" ss:Vertical="Bottom"/&gt; &lt;Borders/&gt; &lt;Interior/&gt; &lt;NumberFormat ss:Format="@"/&gt; &lt;/Style&gt; &lt;/Styles&gt; &lt;Worksheet ss:Name="Not 8 Counts"&gt; &lt;Table ss:ExpandedColumnCount="8" ss:ExpandedRowCount="8" x:FullColumns="1" x:FullRows="1"&gt; &lt;Column ss:AutoFitWidth="0" ss:Width="101.25"/&gt; &lt;Column ss:StyleID="s28" ss:AutoFitWidth="0" ss:Width="66.75"/&gt; &lt;Column ss:StyleID="s28" ss:AutoFitWidth="0" ss:Width="52.5"/&gt; &lt;Column ss:StyleID="s28" ss:AutoFitWidth="0" ss:Width="117.75"/&gt; &lt;Column ss:AutoFitWidth="0" ss:Width="62.25"/&gt; &lt;Column ss:Index="7" ss:AutoFitWidth="0" ss:Width="68.25"/&gt; &lt;Row&gt; &lt;Cell ss:StyleID="s24"&gt;&lt;Data ss:Type="String"&gt;SPAccountIdentifier&lt;/Data&gt;&lt;/Cell&gt; &lt;Cell ss:StyleID="s27"&gt;&lt;Data ss:Type="String"&gt;SPUIAccount&lt;/Data&gt;&lt;/Cell&gt; &lt;Cell ss:StyleID="s27"&gt;&lt;Data ss:Type="String"&gt;SPFein&lt;/Data&gt;&lt;/Cell&gt; &lt;Cell ss:StyleID="s27"&gt;&lt;Data ss:Type="String"&gt;SPLegalName&lt;/Data&gt;&lt;/Cell&gt; &lt;Cell ss:StyleID="s24"&gt;&lt;Data ss:Type="String"&gt;SPRateYear&lt;/Data&gt;&lt;/Cell&gt; &lt;Cell ss:Index="7" ss:StyleID="s24"&gt;&lt;Data ss:Type="String"&gt;Notes&lt;/Data&gt;&lt;/Cell&gt; &lt;/Row&gt; &lt;Row&gt; &lt;Cell&gt;&lt;Data ss:Type="Number"&gt;1&lt;/Data&gt;&lt;/Cell&gt; &lt;Cell&gt;&lt;Data ss:Type="Number"&gt;204006&lt;/Data&gt;&lt;/Cell&gt; &lt;Cell ss:StyleID="s26"&gt;&lt;Data ss:Type="String"&gt;397221&lt;/Data&gt;&lt;/Cell&gt; &lt;Cell ss:StyleID="s26"&gt;&lt;Data ss:Type="String"&gt;Fake&lt;/Data&gt;&lt;/Cell&gt; &lt;Cell&gt;&lt;Data ss:Type="Number"&gt;2009&lt;/Data&gt;&lt;/Cell&gt; &lt;Cell ss:Index="7"&gt;&lt;Data ss:Type="String"&gt;open subject&lt;/Data&gt;&lt;/Cell&gt; &lt;Cell&gt;&lt;Data ss:Type="String"&gt;Account number dropped proceeding zeros&lt;/Data&gt;&lt;/Cell&gt; &lt;/Row&gt; &lt;Row&gt; &lt;Cell&gt;&lt;Data ss:Type="Number"&gt;2&lt;/Data&gt;&lt;/Cell&gt; &lt;Cell ss:StyleID="s29"&gt;&lt;Data ss:Type="String"&gt;0018008&lt;/Data&gt;&lt;/Cell&gt; &lt;Cell ss:StyleID="s26"&gt;&lt;Data ss:Type="String"&gt;3905530&lt;/Data&gt;&lt;/Cell&gt; &lt;Cell ss:StyleID="s26"&gt;&lt;Data ss:Type="String"&gt;Fake&lt;/Data&gt;&lt;/Cell&gt; &lt;Cell&gt;&lt;Data ss:Type="Number"&gt;2009&lt;/Data&gt;&lt;/Cell&gt; &lt;Cell ss:Index="8"&gt;&lt;Data ss:Type="String"&gt;account number should be 001008&lt;/Data&gt;&lt;/Cell&gt; &lt;/Row&gt; &lt;Row&gt; &lt;Cell&gt;&lt;Data ss:Type="Number"&gt;6&lt;/Data&gt;&lt;/Cell&gt; &lt;Cell ss:StyleID="s25"&gt;&lt;Data ss:Type="String"&gt;04045002&lt;/Data&gt;&lt;/Cell&gt; &lt;Cell ss:StyleID="s26"&gt;&lt;Data ss:Type="String"&gt;3915659&lt;/Data&gt;&lt;/Cell&gt; &lt;Cell ss:StyleID="s26"&gt;&lt;Data ss:Type="String"&gt;FAKE&lt;/Data&gt;&lt;/Cell&gt; &lt;Cell&gt;&lt;Data ss:Type="Number"&gt;2009&lt;/Data&gt;&lt;/Cell&gt; &lt;/Row&gt; &lt;Row&gt; &lt;Cell ss:Index="2" ss:StyleID="s29"/&gt; &lt;/Row&gt; &lt;/Table&gt; &lt;WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"&gt; &lt;Print&gt; &lt;ValidPrinterInfo/&gt; &lt;HorizontalResolution&gt;600&lt;/HorizontalResolution&gt; &lt;VerticalResolution&gt;600&lt;/VerticalResolution&gt; &lt;NumberofCopies&gt;0&lt;/NumberofCopies&gt; &lt;/Print&gt; &lt;Selected/&gt; &lt;Panes&gt; &lt;Pane&gt; &lt;Number&gt;3&lt;/Number&gt; &lt;ActiveRow&gt;13&lt;/ActiveRow&gt; &lt;ActiveCol&gt;3&lt;/ActiveCol&gt; &lt;/Pane&gt; &lt;/Panes&gt; &lt;ProtectObjects&gt;False&lt;/ProtectObjects&gt; &lt;ProtectScenarios&gt;False&lt;/ProtectScenarios&gt; &lt;/WorksheetOptions&gt; &lt;/Worksheet&gt; &lt;/Workbook&gt; </code></pre> <p>XSD:</p> <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"&gt; &lt;xs:element name="Address"&gt; &lt;xs:complexType&gt; &lt;xs:sequence&gt; &lt;xs:element name="Recipient" type="xs:string" /&gt; &lt;xs:element name="House" type="xs:string" /&gt; &lt;xs:element name="Street" type="xs:string" /&gt; &lt;xs:element name="Town" type="xs:string" /&gt; &lt;xs:element name="County" type="xs:string" minOccurs="0" /&gt; &lt;xs:element name="PostCode" type="xs:string" /&gt; &lt;xs:element name="Country"&gt; &lt;xs:simpleType&gt; &lt;xs:restriction base="xs:string"&gt; &lt;xs:enumeration value="FR" /&gt; &lt;xs:enumeration value="DE" /&gt; &lt;xs:enumeration value="ES" /&gt; &lt;xs:enumeration value="UK" /&gt; &lt;xs:enumeration value="US" /&gt; &lt;/xs:restriction&gt; &lt;/xs:simpleType&gt; &lt;/xs:element&gt; &lt;/xs:sequence&gt; &lt;/xs:complexType&gt; &lt;/xs:element&gt; &lt;/xs:schema&gt; </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload