2016-12-16 254 views
1

我的XML驗證與以下原因失敗:XSD驗證失敗

未能執行目標se.ericsson.jcat.ebs:在驗證(默認):XML驗證 - 插件:1.0.2項目ebs-extensions:無法執行mojo:在解析/home/xchoshu/latestWorkspace/ebs-extensions/src/main/resources/log4j2.xml時,在文件:/ home/xchoshu/latestWorkspace/ebs-extensions/src/main /resources/log4j.xsd,第18行,第64列:src-resolve.4.1:解析組件'ConfigurationType'時出錯。檢測到'ConfigurationType'沒有命名空間,但沒有目標命名空間的組件不能從模式文檔'file:/home/xchoshu/latestWorkspace/ebs-extensions/src/main/resources/log4j.xsd'中引用。如果'ConfigurationType'打算有一個命名空間,可能需要提供一個前綴。如果打算'ConfigurationType'沒有命名空間,那麼應該將'沒有'命名空間'屬性的'導入'添加到'file:/home/xchoshu/latestWorkspace/ebs-extensions/src/main/resources/log4j.xsd 」。 - > [求助1]

我XDS樣子:

<?xml version="1.0" encoding="UTF-8"?> 
<!-- 
Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with 
this work for additional information regarding copyright ownership. 
The ASF licenses this file to You under the Apache License, Version 2.0 
(the "License"); you may not use this file except in compliance with 
the License. You may obtain a copy of the License at 
     http://www.apache.org/licenses/LICENSE-2.0 
Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an "AS IS" BASIS, 
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
See the License for the specific language governing permissions and 
limitations under the License. 
--> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://logging.apache.org/log4j/2.0/config" elementFormDefault="qualified" attributeFormDefault="unqualified"> 
    <xs:element name="Configuration" type="ConfigurationType"/> 
    <xs:complexType name="ConfigurationType"> 
     <xs:sequence> 
      <xs:choice minOccurs="0" maxOccurs="1"> 
       <xs:element name="CustomLevels" type="CustomLevelsType"/> 
       <xs:element name="CustomLevel" type="CustomLevelType"/> 
      </xs:choice> 
      <xs:element name="Properties" type="PropertiesType"/> 
      <xs:choice minOccurs="0" maxOccurs="1"> 
       <xs:element name="Filters" type="FiltersType"/> 
       <xs:element name="Filter" type="FilterType"/> 
      </xs:choice> 
      <xs:element name="ThresholdFilter" type="ThresholdFilterType"/> 
      <xs:element name="Appenders" type="AppendersType"/> 
      <xs:element name="Loggers" type="LoggersType"/> 
     </xs:sequence> 
     <xs:attribute name="packages" type="xs:string"/> 
     <xs:attribute name="status" type="xs:string"/> 
     <xs:attribute name="strict" type="xs:string"/> 
     <xs:attribute name="name" type="xs:string"/> 
     <xs:attribute name="advertiser" type="xs:string"/> 
     <xs:attribute name="schema" type="xs:string"/> 
    </xs:complexType> 
    <xs:complexType name="PropertiesType"> 
     <xs:sequence> 
      <xs:element name="Property" type="PropertyType" minOccurs="0" maxOccurs="unbounded"/> 
     </xs:sequence> 
    </xs:complexType> 
    <xs:complexType name="AppenderType"> 
     <xs:sequence> 
      <xs:element name="Layout" type="LayoutType" minOccurs="0"/> 
      <xs:choice minOccurs="0" maxOccurs="1"> 
       <xs:element name="Filters" type="FiltersType"/> 
       <xs:element name="Filter" type="FilterType"/> 
      </xs:choice> 
     </xs:sequence> 
     <xs:attribute name="type" type="xs:string" use="required"/> 
     <xs:attribute name="name" type="xs:string" use="required"/> 
     <xs:attribute name="fileName" type="xs:string" use="optional"/> 
    </xs:complexType> 
    <xs:complexType name="RootType"> 
     <xs:sequence> 
      <xs:element name="AppenderRef" type="AppenderRefType" minOccurs="1" maxOccurs="unbounded"/> 
     </xs:sequence> 
     <xs:attribute name="level" type="xs:string"/> 
    </xs:complexType> 
    <xs:complexType name="PropertyType"> 
     <xs:simpleContent> 
      <xs:extension base="xs:string"> 
       <xs:attribute name="name" type="xs:string"/> 
      </xs:extension> 
     </xs:simpleContent> 
    </xs:complexType> 
    <xs:complexType name="KeyValuePairType"> 
     <xs:simpleContent> 
      <xs:extension base="xs:string"> 
       <xs:attribute name="key" type="xs:string"/> 
       <xs:attribute name="value" type="xs:string"/> 
      </xs:extension> 
     </xs:simpleContent> 
    </xs:complexType> 
    <xs:complexType name="AppendersType"> 
     <xs:sequence> 
      <xs:element name="Appender" type="AppenderType" minOccurs="1" maxOccurs="unbounded"/> 
     </xs:sequence> 
    </xs:complexType> 
    <xs:complexType name="AppenderRefType"> 
     <xs:simpleContent> 
      <xs:extension base="xs:string"> 
       <xs:attribute name="ref" type="xs:string" use="required"/> 
      </xs:extension> 
     </xs:simpleContent> 
    </xs:complexType> 
    <xs:complexType name="LoggerType"> 
     <xs:sequence> 
      <xs:choice minOccurs="0" maxOccurs="1"> 
       <xs:element name="Filters" type="FiltersType"/> 
       <xs:element name="Filter" type="FilterType"/> 
      </xs:choice> 
      <xs:element name="AppenderRef" type="AppenderRefType"/> 
     </xs:sequence> 
     <xs:attribute name="name" type="xs:string" use="required"/> 
     <xs:attribute name="level" type="xs:string" use="optional"/> 
     <xs:attribute name="additivity" type="xs:string" use="optional"/> 
    </xs:complexType> 
    <xs:complexType name="FilterType" mixed="true"> 
     <xs:sequence> 
      <xs:element name="KeyValuePair" type="KeyValuePairType" minOccurs="0"/> 
     </xs:sequence> 
     <xs:attribute name="type" type="xs:string" use="required"/> 
     <xs:attribute name="level" type="xs:string" use="optional"/> 
     <xs:attribute name="marker" type="xs:string" use="optional"/> 
     <xs:attribute name="onMatch" type="xs:string" use="optional"/> 
     <xs:attribute name="onMismatch" type="xs:string" use="optional"/> 
    </xs:complexType> 
    <xs:complexType name="FiltersType"> 
     <xs:sequence> 
      <xs:element name="Filter" type="FilterType" minOccurs="0" maxOccurs="unbounded"/> 
     </xs:sequence> 
    </xs:complexType> 
    <xs:complexType name="CustomLevelType"> 
     <xs:attribute name="name" type="xs:string" use="required"/> 
     <xs:attribute name="intLevel" type="xs:string" use="required"/> 
    </xs:complexType> 
    <xs:complexType name="CustomLevelsType"> 
     <xs:sequence> 
      <xs:element name="CustomLevel" type="CustomLevelType" minOccurs="0" maxOccurs="unbounded"/> 
     </xs:sequence> 
    </xs:complexType> 
    <xs:complexType name="LoggersType" mixed="true"> 
     <xs:sequence> 
      <xs:element name="Logger" type="LoggerType" minOccurs="0" maxOccurs="unbounded"/> 
      <xs:element name="Root" type="RootType" minOccurs="1" maxOccurs="1"/> 
     </xs:sequence> 
    </xs:complexType> 
    <xs:complexType name="LayoutType" mixed="true"> 
     <xs:sequence> 
      <xs:element name="Pattern" type="xs:string" minOccurs="0"/> 
     </xs:sequence> 
     <xs:attribute name="type" type="xs:string" use="required"/> 
     <xs:attribute name="pattern" type="xs:string" use="optional"/> 
    </xs:complexType> 
    <xs:complexType name="ThresholdFilterType"> 
     <xs:attribute name="level" type="xs:string" use="optional"/> 
     <xs:attribute name="onMatch" type="xs:string" use="optional"/> 
     <xs:attribute name="onMismatch" type="xs:string" use="optional"/> 
    </xs:complexType> 
</xs:schema> 

我的XML看起來像:

<Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://logging.apache.org/log4j/2.0/config" 
    xsi:schemaLocation="http://logging.apache.org/log4j/2.0/config https://ei-switching.rnd.ki.sw.ericsson.se/browser/jcat-bsp/log4j.xsd"> 

    <Appenders> 
     <Console name="JCATDefaultConsoleAppender" target="SYSTEM_OUT" 
      follow="true"> 
      <PatternLayout pattern="%d{default} %m [%t] %l%n%ex{full}" /> 
     </Console> 
    </Appenders> 

    <Loggers> 
     <Root level="INFO"> 
      <AppenderRef ref="JCATDefaultConsoleAppender" /> 
     </Root> 
    </Loggers> 

誰能幫助我糾正了XSD。 TIA

問候, Shubhankar

回答

0

的XSD缺少命名空間聲明的xmlns = 「http://logging.apache.org/log4j/2.0/config」。這使得XSD有效。

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      xmlns="http://logging.apache.org/log4j/2.0/config" 
      targetNamespace="http://logging.apache.org/log4j/2.0/config" 
      elementFormDefault="qualified" 
      attributeFormDefault="unqualified"> 
    <xs:element name="Configuration" type="ConfigurationType"/> 

但隨後你的XML文件有很多的問題

enter image description here

你缺少的強制性內容屬性ThresholdFilters附加目的地應至少包含1 追加程序 (不是控制檯

樣本文檔會是這個樣子

<?xml version="1.0" encoding="utf-8"?> 
<!-- Created with Liquid XML 2017 Liquid Studio - Data Designer Edition 15.0.0.6978 (https://www.liquid-technologies.com) --> 
<ns:Configuration xmlns:ns="http://logging.apache.org/log4j/2.0/config" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://logging.apache.org/log4j/2.0/config C:\Temp\StackOverflow\41177776\Schema.xsd" packages="string" status="string" strict="string" name="string" advertiser="string" schema="string"> 
    <ns:CustomLevels><!--optional--> 
     <ns:CustomLevel name="string" intLevel="string" /> 
     <ns:CustomLevel name="string" intLevel="string" /> 
     <ns:CustomLevel name="string" intLevel="string" /> 
    </ns:CustomLevels> 
    <ns:Properties> 
     <ns:Property>string</ns:Property> 
     <ns:Property>string</ns:Property> 
    </ns:Properties> 
    <ns:Filters><!--optional--> 
     <ns:Filter type="string" level="string" marker="string" onMatch="string" onMismatch="string"> 
      <ns:KeyValuePair key="string" value="string">string</ns:KeyValuePair> 
     </ns:Filter> 
    </ns:Filters> 
    <ns:ThresholdFilter level="string" onMatch="string" onMismatch="string" /> 
    <ns:Appenders> 
     <ns:Appender type="string" name="string" fileName="string" /> 
     <ns:Appender type="string" name="string" /> 
    </ns:Appenders> 
    <ns:Loggers> 
     <ns:Logger name="string" level="string" additivity="string"> 
      <ns:AppenderRef ref="string">string</ns:AppenderRef> 
     </ns:Logger> 
     <ns:Root> 
      <ns:AppenderRef ref="string">string</ns:AppenderRef> 
     </ns:Root> 
    </ns:Loggers> 
</ns:Configuration> 
+0

我是新來的XSD和XML你能幫助我在正確的次序排列它們。 –