|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
public interface EntityResolver2
외부 엔티티 참조를 입력 소스에 매핑 하거나 부족하는 외부 부분집합을 제공하거나 하는 확장 인터페이스입니다. XMLReader.setEntityResolver()
메소드를 사용해 퍼서에게 이 인터페이스의 구현을 제공합니다. 퍼서가 이 인터페이스의 메소드를 사용하는 경우, 낡은 SAX 1.0 EntityResolver.resolveEntity()
메소드는 아니고, 이 인터페이스의 EntityResolver2.resolveEntity()
메소드를 사용합니다.
이 모듈은, 원시 코드, 문서 모두 공개 도메인에 놓여져 있습니다. 따라서, 내용에 관한보증은 일절 제공되지 않습니다.
외부 엔티티를 위해서(때문에) 이 인터페이스를 정의하도록(듯이) 커스터마이즈 할 필요가 있는 경우, SAX 어플리케이션은 「true」(기능이 인식되었을 경우의 디폴트 값)로 설정된 「http://xml.org/sax/features/use-entity-resolver2」기능 플래그를 가지는 XMLReader 를 사용할 필요가 있습니다. 그 플래그가 인식되지 않는 경우나 그 값이 false 의 경우, 또는 리절버가 이 인터페이스를 구현하지 않는 경우에는,EntityResolver
메소드만을 사용합니다.
이 인터페이스는 엔티티 해결을 변경하는 3 종류의 어플리케이션을 지원합니다. 「Old Style」어플리케이션은 이 인터페이스에 대해서는 인식하지 않고, EntityResolver 를 제공합니다. 「Transitional Mode」는 EntityResolver2 를 제공해, EntityResolver2 를 지원하는 모든 시스템 (퍼서 또는 그 외의 툴)에 있는 메소드의 이점을 자동적으로 얻을 수 있습니다 (다상성이기 때문에). 「Old Style」어플리케이션도 「Transitional Mode」어플리케이션도 SAX2 퍼서와 함께 동작합니다. 「New style」어플리케이션은, SAX2 퍼서상 이외에서는 이 특정의 기능을 지원할 수 없습니다. 원의 SAX 1.0 스타이르엔티티 해결 메소드가 불려 갔을 경우, 이러한 어플리케이션은 기능 플래그가 「true」의 값을 가지도록(듯이) 요구해, 제공하는 EntityResolver2 구현에 의해 예외를 throw 할 수 있습니다.
XMLReader.setEntityResolver(org.xml.sax.EntityResolver)
메소드의 개요 | |
---|---|
InputSource |
getExternalSubset (String name,
String baseURI)
어플리케이션은, 명확하게 정의하고 있지 않는 문서의 외부 부분집합을 제공할 수 있습니다. |
InputSource |
resolveEntity (String name,
String publicId,
String baseURI,
String systemId)
어플리케이션은 외부 엔티티 참조를 입력 소스에 매핑 하는지, 일반적인 URI 해결을 사용하도록(듯이) 퍼서에게 통지할 수 있습니다. |
인터페이스 org.xml.sax. EntityResolver 로부터 상속된 메소드 |
---|
resolveEntity |
메소드의 상세 |
---|
InputSource getExternalSubset(String name, String baseURI) throws SAXException , IOException
startDTD()
를 통해 벌써 문서에는 외부 부분집합이 포함되어 있었는지와 같이 보고됩니다.
또, 이 메소드는 DOCTYPE 선언을 가지지 않는 문서에도 사용할 수 있습니다. 루트 요소가 검출되어도 DOCTYPE 선언이 발견되지 않았던 경우에 이 메소드가 불려 갑니다. 외부 부분집합의 값을 돌려주는 경우, 이 루트 요소는 루트 요소로서 선언되어 무효가 되는 문서의 최초로 DOCTYPE 선언을 잇는 효과를 가져옵니다. 그 퍼서 콜백의 순서는 논리적이게는 다음의 케이스와 닮아 있습니다.
... comments and PIs from the prolog (as usual) startDTD ("rootName", source.getPublicId (), source.getSystemId ()); startEntity ("[dtd]"); ... declarations, comments, and PIs from the external subset endEntity ("[dtd]"); endDTD (); ... then the rest of the document (as usual) startElement (..., "rootName", ...);
InputSource 에서는 더 이상의 해결은 취득되지 않습니다. 이 메소드를 구현하는 것으로 resolveEntity()
를 호출해 DTD 엔티티의 로컬 캐쉬를 사용하는 등의 이점을 얻을 수 있습니다. 또, 타당성을 검증하지 않고, 외부 파라메이타엔티티를 포함하지 않은 프로세서에서는 이 메소드를 사용할 수 없습니다.
외부 엔티티에 대해서 바람직하지 않은 네트워크 액세스를 항상 요구하는 XML 프로세서와 호환성이 있는 경우, 이 메소드에 사용하면(자) 데이터의 검증도 용이하게 됩니다. 또, 다른 이유에는 DTD 이외의 정책를 임포트 합니다. 타당성을 검증할 수 없는 원인에는, 문서에 DTD 를 포함하도록(듯이) 요구합니다. 이것에 의해 속성이 마을 없게 처리됩니다. 예를 들어, XPath 프로세서는, 넓게 사용되고 있는 참조의 형태를 처리하기 전에 형태 「ID」를 가지는 속성을 인식할 필요가 있습니다.
경고: 외부 부분집합을 돌려주면(자) 입력 문서가 변경됩니다. 일반의 엔티티에 정의를 주는 것에 의해 부정한 문서를 정형할 수 있습니다.
name
- 문서의 루트 요소의 식별. 이용 가능한 DOCTYPE 선언 또는 실제의 루트 요소로부터의
이름baseURI
- 문서의 기저 URI. 외부 서브 텍스트를 선택하는 추가 힌트로서 기능한다.
XMLReader 에는 InputSource 만이 지정되었기 때문에 null 가 아닌 한
항상 절대 URI 이다
SAXException
- SAX 예외. 다른 예외를 랩 하고 있을 가능성이 있다
IOException
- 새로운 InputStream 나 Reader, 또는 부정한 URL 의 작성 실패를 나타내고 있을 가능성이 있다InputSource resolveEntity(String name, String publicId, String baseURI, String systemId) throws SAXException , IOException
EntityResolver
인터페이스에 비해 유연성이 있어,OASIS XML Catalogs 스펙으로 정의되었던 것보다 복잡한 카탈로그 schema의 구현을 지원합니다.
이 리절버 메소드를 사용하도록(듯이) 설정된 퍼서는, 리절버 메소드를 호출해 XML 텍스트의 참조에 의해 포함되어 있는 외부 엔티티에 사용하는 입력 소스를 결정합니다. 그 경우, 문서 엔티티와 getExternalSubset()
에 의해 반환된 외부 엔티티는 제외됩니다. 타당성을 검증할 수 없는 프로세서가 기능 플래그를 사용해 엔티티 (파라메이타엔티티 또는 일반 엔티티)의 클래스를 포함하지 않게 설정되어 있으면(자), 이 메소드는 그러한 엔티티에서는 불려 가지 않습니다.
여기서 사용되는 엔티티 명명 schema는,LexicalHandler
또는 ContentHandler.skippedEntity()
메소드로 사용되는 것 것과 같습니다.
name
- 해결되는 외부 엔티티의 식별.
외부 부분집합의 「[dtd]」나 파라메이타엔티티를 나타내는 「%」로 개시되는 이름,
또는 그 이외의 일반 엔티티의 이름. SAX2 퍼서에 의해 불려 가는 경우는 null 가 아닌publicId
- 참조되는 외부 엔티티의 공개 식별자 (XML 스펙으로 요구되도록(듯이) 정규화되고 있다).
제공되지 않았던 경우는 nullbaseURI
- 상대적인 systemID 를 기준으로 한 URI 의 해석.
XMLReader 는 InputSource 로 지정된 가능성이 있으므로, null 가 아닌 한 항상 절대
URI. 이 URI 는, 관련하는 선언을 개시하는 「<」에 관련지을 수 있고 있는 XML 스펙에 의해 정의되는systemId
- 참조되는 외부 엔티티의 시스템 식별자.
상대 또는 절대 URI.
SAX2 퍼서에 의해 불려 가는 경우는 null 는 아니고, 선언된 엔티티와 외부 부분집합만이, 그러한 퍼서에 의해 해결된다
SAXException
- SAX 예외. 다른 예외를 랩 하고 있을 가능성이 있다
IOException
- 새로운 InputStream 나 Reader, 또는 부정한 URL 의 작성 실패를 나타내고 있을 가능성이 있다
|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.