sourcecode

문서에 대해 검색된 문법 제약 조건(DTD 또는 XML 스키마)이 없습니다.

codebag 2023. 4. 28. 20:32
반응형

문서에 대해 검색된 문법 제약 조건(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을 변경했습니다. 지금 이 오류가 발생합니다.

요소 유형 "template"의 내용은 "(description,variation?,variation-field?,allow-multiple-variation?,class-pattern?,getter-setter?,allow-file-extensions?,number-required-class?,template-body)"와 일치해야 합니다.

다음과 같이 지정하여 이 성가신 경고를 제거했습니다.<!DOCTYPE xml><?xml ... >를 지정합니다(예:templates당신의 경우).

<?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">
]>

위 라인의 의미...
1) " Line 1"로 정의된 루트 요소 "는 "입니다.
2) 2) 요소 정의의 시작
3) "NameOf" " "nameOf" "YourRootElement2" ""
라인 4) 하위 요소, 데이터 유형으로 정의됨#PCDATA
5)element 인5) 하위요소, 데유로으정의됨형터이라,▁line됨정.#PCDATA
6) 의를 확장합니다.&nbsp;&#xA0;가 XML 분석될 때 파일에 의해 구문 됩니다.
7) )의 확장&author;Your Author Name가 XML 분석될 때 파일에 의해 구문 됩니다.
8)의 끝 인라 8) 정의끝의끝

진정한 솔루션:

더하다<!DOCTYPE something>있는 XML의 에, 각문의있는 XML작분지까부시제가,

태그 xml 에 합니다.<?xml version="1.0" encoding="utf-8"?>

당신은 의사 유형을 위해 무엇이든 쓸 수 있지만, 기본적으로 제가 이해하는 바로는 그것은 명백하고 활동적이어야 합니다.

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

이클립스에서 "문서에 대해 감지된 문법 제약 조건(dtd 또는 xml 스키마)이 없습니다." i는 xsd 스키마 파일을 아래의 xml 카탈로그에 추가하는 데 사용합니다.

"창 \ 기본 설정 \ 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에서 /home/my_user/xsd/my_xsd 아래에 xsd를 생성하고 저장했습니다.xsd

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

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

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


xml 파일을 닫았다가 다시 열고 스키마를 위반하도록 일부 변경을 수행하십시오. 알림 메시지가 표시됩니다.

DOCYPE 태그 추가...

이 경우:

<!DOCTYPE xml>

다음 뒤에 추가:

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

그래서:

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

경고 메시지에 제시된 제안을 이해하려고 노력하면 도움이 될 수 있습니다.

저도 같은 문제가 있었는데, 조사를 한 후 해결책을 찾았고 처음에 아래 줄을 추가하여 해결했습니다.

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

제 경우에는 다른 문제로 이어지게 됩니다.제가 제안을 읽음으로써 해결한 것은, 다시 또 다른 문제로 번졌는데, 원래의 원인을 이해하여 해결한 것으로, 첫 번째 링크가 끊어진 것입니다(찾지 못했습니다).다음은 문제를 완전히 해결하기 위해 수행된 작업을 설명하는 단계별 이미지입니다.

여기에 이미지 설명 입력

여기에 이미지 설명 입력

여기에 이미지 설명 입력

여기에 이미지 설명 입력

여기에 이미지 설명 입력

새로운 청정 방법은 xml을 다음과 같이 쓰는 것입니다.

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

<rootElement>
 ....
</rootElement>

위의 작품들은 이클립스 주노+에서 작동합니다.

Windows에서 문자 인코딩과 unix 파일 모드를 실행하는 이 문제였습니다.

전체 코드를 표시하고, 잘라낸 후 다시 붙여넣기(간단히 CtrlA-CtrlX-CtrlV)하면 모든 것이 정상이었습니다. 더 이상 "문법 제약은 없습니다.경고

"문법적 제약이 없는" 이유를 말씀드릴 수 없습니다.경고합니다. 하지만 DOCYPE 선언을 완전히 제거하면 이클립스에서 도발할 수 있습니다.선언을 원래대로 되돌리고 다시 유효성을 검사하면 다음 오류 메시지가 표시됩니다.

요소 유형 "template"의 내용은 (description+, variation?, variation-field?, allow-multiple-variation?, class-pattern?, getter-setter?, allowed-file-extensions?, template-body+)와 일치해야 합니다.

그리고 저는 그것이 옳다고 생각합니다. ("number-required-classes" 요소는 허용되지 않습니다.)

저는 이것이 오래된 것이라는 것을 알지만, 저는 같은 문제를 통과하고 있고 봄 문서에서 해결책을 찾았습니다. 다음 xml 구성은 저를 위해 문제를 해결했습니다.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc" 
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/mvc 
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/tx 

<!-- THIS IS THE LINE THAT SOLVE MY PROBLEM -->
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 

http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-3.0.xsd">

이 포럼 주제에서 제안한 것처럼 위에 선을 긋기 전에, 나는 같은 경고 메시지를 가지고 있고, 이것을 배치합니다.

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

그리고 그것은 나에게 다음과 같은 경고 메시지를 줍니다.

The content of element type "template" must match "
(description,variation?,variation-field?,allow- multiple-variation?,class-
pattern?,getter-setter?,allowed-file-extensions?,number-required- 
classes?,template-body)".

그러니 제 xml 구성의 제안된 행을 사용해 보십시오.

이는 이클립스에서 유효성 검사를 해제하기 때문일 수 있습니다.

이 문제는 Eclipse 3.5.2에서 해결되었습니다.두 개의 완전히 동일한 레이아웃 중 하나는 경고를 받았습니다.모든 탭을 닫았고 다시 열 때 경고가 사라졌습니다.

  1. 전체 코드를 메모장에 복사합니다.
  2. 임의의 이름으로 파일을 임시로 저장합니다. [파일을 저장하는 동안 "filename" = UTF-8(또는 UTF 이상) 사용].
  3. 파일을 닫습니다.
  4. 다시 열어보세요.
  5. 복사하여 코드에 다시 붙여넣습니다.

오류가 사라져야 합니다.

xsi:noNamespaceSchemaLocation의 상대 경로를 사용하여 로컬 xsd 파일을 제공했습니다(인스턴스 xml에서 네임스페이스를 사용할 수 없었기 때문입니다).

<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="../project/schema.xsd">
</root>

유효성 검사가 작동하고 경고가 수정됩니다(무시되지 않음).

https://www.w3schools.com/xml/schema_example.asp

나도 web.xml 파일을 사용하는 이클립스에서 같은 문제를 겪었습니다.
그것은 나에게 "문서에 언급된 문법 제약 조건 없음"을 보여주었습니다.

하지만 태그를 추가하면 해결할 수 있습니다.
xml 태그 뒤에 있습니다. <?xml version = "1.0" encoding = "UTF-8"?>

이 문제에 대한 해결책은 다음과 같습니다.


1단계: 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 속성으로 이동합니다.

2단계: '라이브러리'로 이동하여 프로젝트의 'JRE 시스템 라이브러리'를 제거합니다.

3단계: '라이브러리 추가' --> 'JRE 시스템 라이브러리' --> '워크스페이스 기본 JRE'를 선택합니다.

3단계: '주문 및 내보내기'로 이동하여 새로 추가된 'JRE 시스템 라이브러리'를 표시합니다.

4단계: 프로젝트 새로 고침 및 치료

유레카! 됐다 :)

제가 해결책을 찾은 것은 아주 간단한 것이었습니다. 선호도를 수정하기 전에 시도해보아야 한다고 생각합니다.저의 경우 기본 태그 "리소스"로 지정된 문자열 파일에서 이 문제가 발생했습니다. 위와 아래에서 태그를 삭제하고 프로젝트를 정리한 후 파일을 저장한 후 태그를 다시 삽입했습니다.그 이후로 그 문제는 사라졌고 저에게 어떠한 경고도 주지 않았습니다.사실이라고 하기에는 단순하게 들릴 수도 있지만, 가끔은 문제를 해결하는 가장 간단한 것들입니다.건배.

언급URL : https://stackoverflow.com/questions/4551783/no-grammar-constraints-dtd-or-xml-schema-detected-for-the-document

반응형