[xml] 문서에 대한 문법 제한 조건 (DTD 또는 XML 스키마)이 발견되지 않았습니다.

나는이 dtd를 가지고있다 : http://fast-code.sourceforge.net/template.dtd
그러나 xml에 포함시킬 때 경고를 얻는다 : 문서에 대한 문법 제약 (DTD 또는 XML 스키마)이 감지되지 않았다. xml은 다음과 같습니다

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE templates PUBLIC "//UNKNOWN/" "http://fast-code.sourceforge.net/template.dtd">

<templates>
<template type="INSTANCE_OF_CLASS">
    <description>Used to Create instance of class</description>
    <variation>asasa</variation>
    <variation-field>asasa</variation-field>
    <class-pattern>asasa</class-pattern>
    <getter-setter>setter</getter-setter>
    <allowed-file-extensions>java</allowed-file-extensions>
    <number-required-classes>1</number-required-classes>
    <allow-multiple-variation>false</allow-multiple-variation>
    <template-body>
        <![CDATA[
            // Creating new instance of ${class_name}
            final ${class_name} ${instance} = new ${class_name}();
            #foreach ($field in ${fields})
                ${instance}.${field.setter}(${field.value});
            #end
        ]]>
    </template-body>
</template>
</templates>

편집 : xml을 변경했는데 지금이 오류가 발생합니다.

요소 유형 “템플릿”의 내용은 “(설명, 변형?, 변형 필드?, 허용 다변량?, 클래스 패턴?, 게터 설정?, 허용 된 파일 확장명?, 숫자 필요)와 일치해야합니다. 클래스?, 서식 파일)).



답변

내 경우에는 단순히 태그 <!DOCTYPE xml>뒤에 after 를 추가 하여이 성가신 경고를 해결했습니다 <?xml ... >.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>


답변

이것은 Eclipse 3.7.1에서 나를 위해 일했습니다 : 환경 설정 창으로 이동 한 다음 XML-> XML 파일-> 유효성 검사로 이동하십시오. 그런 다음 오른쪽에있는 환경 설정 패널의 파일 유효성 검증 섹션에서 “문법 지정되지 않음”환경 설정의 드롭 다운 상자에서 무시를 선택하십시오. 경고가 사라지도록 파일을 닫았다가 다시 열어야 할 수도 있습니다.

(이 질문은 오래되었다는 것을 알고 있지만 경고를 검색 할 때 처음 발견 한 것이므로 다른 검색자를 위해 여기에 답변을 게시하고 있습니다.)


답변

대답:

아래 DTD의 각 부분에 대한 의견. 자세한 내용은 공식 사양 을 참조하십시오 .

  <!
  DOCTYPE ----------------------------------------- correct
  templates --------------------------------------- correct  Name matches root element.
  PUBLIC ------------------------------------------ correct  Accessing external subset via URL.
  "//UNKNOWN/" ------------------------------------ invalid? Seems useless, wrong, out-of-place.
                                                             Safely replaceable by DTD URL in next line.
  "http://fast-code.sourceforge.net/template.dtd" - invalid  URL is currently broken.
  >

간단한 설명 :

매우 기본적인 DTD는 다음 두 번째 줄과 같습니다.

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE nameOfYourRootElement>
<nameOfYourRootElement>
</nameOfYourRootElement>

상해:

DTD는 합의 된 데이터 형식을 설정하고 그러한 데이터의 수신을 확인하는 역할을합니다. 이들은 다음을 포함하여 XML 문서의 구조를 정의합니다.

  • 법적 요소 목록
  • 특수 문자
  • 문자열
  • 그리고 훨씬 더

예 :

<!DOCTYPE nameOfYourRootElement
[
<!ELEMENT nameOfYourRootElement (nameOfChildElement1,nameOfChildElement2)>
<!ELEMENT nameOfChildElement1 (#PCDATA)>
<!ELEMENT nameOfChildElement2 (#PCDATA)>
<!ENTITY nbsp "&#xA0;">
<!ENTITY author "Your Author Name">
]>

위 줄의 의미 …
Line 1) “nameOfYourRootElement”로 정의 된 루트 요소
Line 2) 요소 정의 시작
Line 3) “nameOfYourRootElement1″및 “nameOfYourRootElement2″로 정의 된 루트 요소 자식
Line 4) 데이터로 정의되는 하위 요소 입력 #PCDATA
데이터 유형으로 정의되어 5 호선) 아이 요소, #PCDATA
6 호선)의 경우 확장 &nbsp;에이 &#xA0;문서를 XML 파서에 의해 구문 분석 할 때
7 호선)의 경우 확장 &author;에이 Your Author Name문서를 XML 파서에 의해 구문 분석 할 때
정의의 라인 8) 끝


답변

실제 솔루션 :

<!DOCTYPE something>문제가있는 각 XML의 시작 부분에 추가

xml 태그 뒤 <?xml version="1.0" encoding="utf-8"?>

당신은 doctype을 위해 무엇이든 쓸 수 있지만, 기본적으로 그것은 내가 이해 한 것에서 명시 적이거나 활동적이어야합니다.


답변

XML 카탈로그에 스키마를 추가하려고 했습니까?

“문서에 대해 문법 제약 (dtd 또는 xml 스키마)이 감지되지 않음”을 피하기 위해 아래의 XML 카탈로그에 xsd 스키마 파일을 추가하는 데 사용합니다.

“창 \ 환경 설정 \ xml \ xml 카탈로그 \ 사용자 지정 항목”.

오른쪽의 “추가”버튼을 클릭하십시오.


예:

<?xml version="1.0" encoding="UTF-8"?>
<HolidayRequest xmlns="http://mycompany.com/hr/schemas">
    <Holiday>
        <StartDate>2006-07-03</StartDate>
        <EndDate>2006-07-07</EndDate>
    </Holiday>
    <Employee>
        <Number>42</Number>
        <FirstName>Arjen</FirstName>
        <LastName>Poutsma</LastName>
    </Employee>
</HolidayRequest>

이 XML에서 xsd를 생성하고 저장했습니다 : /home/my_user/xsd/my_xsd.xsd

위치 : /home/my_user/xsd/my_xsd.xsd

키 유형으로 : 네임 스페이스 이름

키로 : http://mycompany.com/hr/schemas


xml 파일을 닫았다가 다시 열고 스키마를 위반하도록 일부 변경을 수행하면 알림을 받아야합니다.


답변

DOCTYPE 태그 추가 …

이 경우 :

<!DOCTYPE xml>

추가 후 :

<?xml version="1.0" encoding="UTF-8"?>

그래서:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>


답변

새로운 깨끗한 방법은 다음과 같이 XML을 작성하는 것입니다.

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE rootElement>

<rootElement>
 ....
</rootElement>

위의 Eclipse Juno +에서 작동합니다