2016-12-16 527 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你能帮助我在正确的次序排列它们。 –