Java xsd验证失败

Java xsd验证失败,java,xml,validation,xsd,Java,Xml,Validation,Xsd,我的xml验证失败,原因如下: 未能执行目标se.ericsson.jcat.ebs:xml验证插件:1.0.2:验证(默认)项目ebs扩展:无法执行mojo:在解析/home/xchoshu/latestWorkspace/ebs extensions/src/main/resources/log4j2.xml时,位于文件:/home/xchoshu/latestWorkspace/ebs extensions/src/main/resources/log4j.xsd,第18行,第64列:sr

我的xml验证失败,原因如下:

未能执行目标se.ericsson.jcat.ebs:xml验证插件:1.0.2:验证(默认)项目ebs扩展:无法执行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吗。 短暂性脑缺血发作

问候,,
Shubhankar

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文件有很多问题

缺少必需元素属性阈值过滤器附加器应至少包含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>

一串
一串
一串
一串
一串

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文件有很多问题

缺少必需元素属性阈值过滤器附加器应至少包含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>

一串
一串
一串
一串
一串

我不熟悉xsd和xml,你能帮我把它们按正确的顺序排列吗?我不熟悉xsd和xml,你能帮我把它们按正确的顺序排列吗。