내 질문을 읽어 주셔서 감사합니다. 나는 비슷한 질문을 찾아 보았지만 그 중 아무도 무슨 일이 일어나고 있는지 전혀 설명하지 못했다.이 .DTD를 잘못 사용하고 있습니까, 아니면 정확히 무엇을해야하는지 오해하고 있습니까?
나는 XML 파일이 있습니다
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="../wikiStyle.css"?>
<!DOCTYPE article SYSTEM "../article.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
<header>
<title>Foreign relations of Malta</title>
<id>19146</id>
</header>
<bdy>
<link xlink:type="simple" xlink:href="../205/40205.xml">Albania</link> ·
<link xlink:type="simple" xlink:href="../588/67588.xml">Andorra</link> ·
</bdy>
</article>
당신이 볼 수 있듯이을; 나는이 .dtd 파일을 참조했습니다, 그리고 그것은 같은 정의를 포함 :
<!ENTITY nbsp " "> <!-- no-break space = non-breaking space,
U+00A0 ISOnum -->
내 목표는 판독 가능 브라우저에서이 .xml 파일을 표시하는 것입니다. CSS는 nbsp와 같은 요소를 포함하는 .xml 파일을 제외하고는 완벽하게 관리합니다. 이 경우에
, 내가 얻을 같은 오류 : 나는 그것을 알 수있는 바와 같이
XML Parsing Error: undefined entity
10.1126/science.288.5472.1775</weblink>. PMID 10877698.</cite> </entry>
--------------------------------------------------------------^
에서,은 .dtd이 라인은 브라우저에이 요소를 선언하고에 & NBSP를 사용하는 저를 활성화해야 내 XML은 (그리고 디스플레이 브라우저의 파서 &에 # 160을 확장했다.
- 내가 이 일어나고 무엇을해야 이해 내에는 수정 건가요, 아니면 내가 마일입니다 무언가를 ssing?
- 이 요소를 브라우저에서 표시 할 수 있도록 어떻게 선언 할 수 있습니까?
참고 : 저는 수백만 개의 XML 파일로 작업하고 있으며 생성하지 않습니다. .xml 파일 자체를 변경하지 않아도되는 솔루션이 필요합니다.
도움 주셔서 감사합니다. 문제의 진단은 정확했고 .dtd는 단지 읽히지 않았습니다. 해결책으로는 내부 .dtd가 각 파일에 30 + kb를 추가하는 것으로 나타났습니다. 이는 작동하지 않습니다. 당분간 내가 찾은 최선의 해결책은 내 문서를 게으르게 파싱하고 각 요소의 각 인스턴스를 해당하는 hashcode로 대체하는 것입니다. – Paul
브라우저에 대한 주된 관심사가 문서를 올바르게 표시하는 경우 (즉, 별도로 유효성을 검사하는 경우) 내부 하위 집합에 전체 DTD가 필요하지 않으며 문서에 언급 된 항목의 엔티티 선언 만 필요합니다 . 일부 수작업을 기꺼이 받아들이려면 엔티티 선언을 숫자로 된 참조로 대체하는 것처럼 엔티티 선언을 내부 하위 세트에 쉽게 삽입 할 수 있습니다. 손으로 작업하는 것이 너무 많아지면 XSLT를 사용한 단순한 ID 변환이 자동으로 이러한 작업을 쉽게 수행 할 수 있습니다. –
@ C.M.Sperberg-McQueen - 좋은 의견과 전적으로 동의합니다. 나는 Paul이 주석에서 언급 한 30 + kb가 모든 엔티티 선언인지 또는 전체 DTD를 추가했는지 궁금합니다.제 XML 예제가 여러분이 말하는 것을 정확하게 보여주고 있다고 생각합니다. 엔티티 선언 만있는 내부 서브 세트 공공 및 시스템 식별자도 제거했습니다. –