|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세 : 필드 | 생성자 | 메소드 |
java.lang.Objectorg.xml.sax.helpers.NamespaceSupport
public class NamespaceSupport
SAX 를 사용하는 어플리케이션에 의하고, 또 내부적으로는 SAX 드라이버에 의해 사용하는 이름 공간 논리를 캡슐화합니다.
이 모듈은, 원시 코드, 문서 모두 공개 도메인에 놓여져 있습니다. 따라서, 내용에 관한보증은 일절 제공되지 않습니다. 상세한 것에 대하여는,http://www.saxproject.org 를 참조해 주세요.
이 클래스는 이름 공간 처리의 논리를 캡슐화합니다. 이 클래스를 사용해, 각 문맥으로 현재 유효한 선언을 추적해, XML 수식명으로부터 자동적으로 이름 공간 부분을 생성할 수 있습니다. 이름 공간을 생성원의 XML qname 에 되돌릴 수도 있습니다.
이름 공간 지원 객체는 재사용 가능합니다만, 다음의 세션까지의 사이에 reset 메소드를 호출할 필요가 있습니다.
다음에, 단순한 세션의 예를 나타냅니다.
String parts[] = new String[3]; NamespaceSupport support = new NamespaceSupport(); support.pushContext(); support.declarePrefix("", "http://www.w3.org/1999/xhtml"); support.declarePrefix("dc", "http://www.purl.org/dc#"); parts = support.processName("p", parts, false); System.out.println("Namespace URI:" + parts[0]); System.out.println("Local name:" + parts[1]); System.out.println("Raw name:" + parts[2]); parts = support.processName("dc:title", parts, false); System.out.println("Namespace URI:" + parts[0]); System.out.println("Local name:" + parts[1]); System.out.println("Raw name:" + parts[2]); support.popContext();
이 클래스는, 이름 공간 선언을 포함한 요소가 거의 없는 것을 상정해 최적화되고 있습니다. 따라서, 모든 문맥으로 동일한 접두사와 URI 의 매핑이 반복해지는 것 같은 경우는, 효율이 낮아질 가능성이 있습니다.
SAX 드라이버 (퍼서)는 이 클래스를 선택해 이름 공간 처리를 구현하는 경우가 있습니다만, 이것은 요구되지 않습니다. 어플리케이션이 이름 공간 정보를 사용하는 경우는, 어플리케이션 자체가 이름 공간 정보를 추적할 필요가 있습니다.
필드의 개요 | |
---|---|
static String |
NSDECL
정수로서의 이름 공간 선언 URI 를 나타냅니다. |
static String |
XMLNS
정수로 XML 이름 공간 URI 를 나타냅니다. |
생성자 의 개요 | |
---|---|
NamespaceSupport ()
새로운 이름 공간 지원 객체를 작성합니다. |
메소드의 개요 | |
---|---|
boolean |
declarePrefix (String prefix,
String uri)
이름 공간앞치수식자를 선언합니다. |
Enumeration |
getDeclaredPrefixes ()
이 문맥내에 선언 떠날 수 있어 모든 전치수식자의 열거를 돌려줍니다. |
String |
getPrefix (String uri)
이름 공간 URI 에 매핑 되고 있기 전치수식자를 1 개 돌려줍니다. |
Enumeration |
getPrefixes ()
현재의 문맥내에서 선언이 액티브한, 모든 접두사의 열거를 돌려줍니다. |
Enumeration |
getPrefixes (String uri)
현재의 문맥내에서 선언이 액티브하게 되어 있는 지정된 URI 의 모든 접두사의 열거를 돌려줍니다. |
String |
getURI (String prefix)
전치수식자를 검색해, 현재 매핑 되고 있는 이름 공간 URI 를 가져옵니다. |
boolean |
isNamespaceDeclUris ()
이름 공간 선언의 속성이 이름 공간에 배치되었을 경우는 true 를 돌려줍니다. |
void |
popContext ()
이전의 이름 공간 문맥에 되돌립니다. |
String [] |
processName (String qName,
String [] parts,
boolean isAttribute)
현재의 문맥내의 모든 선언이 declarePrefix() 에 의해 처리된 뒤, raw XML 의 수식명을 처리합니다. |
void |
pushContext ()
새로운 이름 공간 문맥을 개시합니다. |
void |
reset ()
이 이름 공간 지원 객체를 재사용하기 위해(때문에), 리셋 합니다. |
void |
setNamespaceDeclUris (boolean value)
이름 공간 선언의 속성이 processName() 에 의해 NSDECL 이름 공간에 배치될지 어떨지를 제어합니다. |
클래스 java.lang. Object 로부터 상속된 메소드 |
---|
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait |
필드의 상세 |
---|
public static final String XMLNS
http://www.w3.org/XML/1998/namespace
입니다.
이것은, 「xml」접두사에 자동적으로 매핑 되는 이름 공간 URI 입니다.
public static final String NSDECL
http://www.w3.org/xmlns/2000/
입니다. 이 정오표는 SAX2 이후의 것이므로, SAX2 는 원의 권고에는 디폴트로 설정해, 일반적으로은 이 URI 는 사용하지 않습니다.
이것은, 「xmlns」속성과 「xmlns:*」속성에 옵션으로 적용되는 이름 공간 URI 입니다. 이름 공간 선언에 사용합니다.
setNamespaceDeclUris(boolean)
,
isNamespaceDeclUris()
,
정수 필드치 생성자 의 상세 |
---|
public NamespaceSupport()
메소드의 상세 |
---|
public void reset()
이름 공간 지원 객체를 새로운 세션으로 재사용하기 전에, 이 메소드를 호출할 필요가 있습니다. 이름 공간 선언 URI 를 지원하는 경우는, 그 플래그도 디폴트 이외의 값으로 설정할 필요가 있습니다.
setNamespaceDeclUris(boolean)
public void pushContext()
이벤트 콜백 코드는, 요소 마다 한 번만 새로운 문맥을 개시할 필요가 있습니다. 즉, 2 개소중 어느 쪽인지로 이것을 호출할 준비를 합니다. 이름 공간 선언을 포함하지 않는 요소의 경우, 「ContentHandler.startElement()」콜백이 올바른 장소입니다. 이러한 선언을 가지는 요소의 경우, 최초의 「ContentHandler.startPrefixMapping()」콜백으로 행해집니다. 문맥이 벌써 개시되었는지 어떠했는지는 boolean 플래그를 사용해 추적할 수 있습니다. 메소드의 어느 쪽인지가 불려 갔을 경우, 플래그를 체크해, 새로운 문맥을 개시할 필요가 있을지 어떨지를 봅니다. 개시할 필요가 있는 경우는, 문맥을 개시해 플래그를 설정합니다. 「ContentHandler.startElement()」는, 이것을 실시한 뒤 반드시 플래그를 클리어 합니다.
일반적으로, SAX 드라이버는, 새로운 문맥을 각 XML 요소의 선두에 푸쉬 합니다. 그리고, 최초로 속성의 패스를 실행해 모든 이름 공간 선언을 처리해, 「ContentHandler.startPrefixMapping()」콜백을 실시합니다. 다음에, 2 번째의 패스로 모든 속성 및 요소명의 이름 공간 수식명을 결정합니다. 이것에 의해, 「ContentHandler.startElement()」콜백의 모든 정보를 사용할 수 있어 실행 가능하게 됩니다.
이름 공간 지원 객체는, 벌써 유효하게 되어 있는 베이스 문맥으로 개시합니다. 이 문맥에 선언되고 있는 것은 「xml」접두사 뿐입니다.
ContentHandler
,
popContext()
public void popContext()
일반적으로은, 각 XML 요소의 끝나에 문맥을 팝 할 필요가 있습니다. 문맥을 팝 하면(자), 이전에 유효했던 모든 이름 공간 접두사 매핑이 복원됩니다.
문맥을 팝 한 뒤, 새롭게 이름 공간 접두사를 선언할 필요가 있는 경우는, 그 전에 반드시 다른 문맥을 푸쉬 해 주세요.
pushContext()
public boolean declarePrefix(String prefix, String uri)
processName()
를 사용해, 재정의될 가능성이 있는 접두사에 대해서 접두사를 해석하는 패스입니다.
이 메소드는, 현재의 이름 공간 문맥내에 접두사를 선언합니다. 이 접두사는, 하위 문맥으로 그림자화 되지 않는 한, 현재의 문맥이 팝 될 때까지 유효합니다.
디폴트에 의한 요소의 이름 공간을 선언하려면 , 공문자열을 접두사로서 사용합니다.
이 라이브러리에는 비대칭성이 있습니다. 디폴트에 의한 요소의 이름 공간을 선언해도,getPrefix
는 접두사 "" 를 돌려주지 않습니다. 디폴트의 이름 공간을 확인할 필요가 있는 경우는,getURI
를 사용해 명시적으로 검색을 실시해 주세요. 이 비대칭성에 의해, 디폴트의 접두사를 사용할 수 없는 환경에서도, 속성명으로부터 접두사를 검색하기 쉬워지고 있습니다.
prefix
- 선언하는 접두사, 또는 디폴트에 의한 요소의 이름 공간을 나타내는 공문자열.
값 「xml」또는 「xmlns」를 가지지 않는 경우가 있는uri
- 전치수식자에 관련짓는 이름 공간 URI
processName(java.lang.String, java.lang.String[], boolean)
,
getURI(java.lang.String)
,
getPrefix(java.lang.String)
public String [] processName(String qName, String [] parts, boolean isAttribute)
declarePrefix()
에 의해 처리된 뒤, raw XML 의 수식명을 처리합니다.
이 메소드는, 접두사를 삭제해, 그것을 현재 선언되고 있는 접두사내에서 검색하는 것에 의해 현재의 문맥내에서 raw XML 수식명을 처리합니다. 반환값은 호출해 옆으로부터 제공된 배열이 되어, 다음과 같이 할당할 수 있습니다.
배열내의 모든 캐릭터 라인이 내부화 됩니다. raw 명에 아직 선언되어 있지 않은 접두사가 포함되어 있는 경우, 반환값은 null 가 됩니다.
속성명의 처리 방법은 요소명의 처리 방법과는 다릅니다. 접두사를 가지지 않는 요소명이 디폴트의 이름 공간 (존재하는 경우)을 받는데 대해, 접두사를 가지지 않는 속성명은 이것을 받지 않습니다.
qName
- 처리되는 XML 수식명parts
- 호출원이 지정한 배열
(3 개 이상의 멤버를 포함할 수 있다)isAttribute
- 속성명 (true)일까 요소명 (false)
인지를 나타내는 플래그
declarePrefix(java.lang.String, java.lang.String)
,
String.intern()
public String getURI(String prefix)
이 메소드는, 현재의 문맥내에서 접두사를 검색합니다. 디폴트의 이름 공간을 검색하는 경우는 공문자열 ("")을 사용합니다.
prefix
- 검색하기 전치수식자
getPrefix(java.lang.String)
,
getPrefixes()
public Enumeration getPrefixes()
주: 디폴트의 접두사는, 반환값의 열거에 돌려주어지지 않습니다. 디폴트의 접두사를 확인하는 경우는, 인수 "" 를 지정해 getURI
를 사용해 주세요.
getDeclaredPrefixes()
,
getURI(java.lang.String)
public String getPrefix(String uri)
같은 URI 에 복수의 접두사가 매핑 되고 있는 경우, 이 메소드는 그 중에서 무작위로 1 개를 돌려줍니다. 모든 접두사를 확인하는 경우는, 이 메소드는 아니고 getPrefixes()
메소드를 사용해 주세요.
주: 이 메소드는, 빈 상태(empty) (디폴트)의 접두사를 돌려주지 않습니다. 디폴트의 접두사를 확인하는 경우는, 인수 "" 를 지정해 getURI
를 사용해 주세요.
uri
- 이름 공간 URI
getPrefixes(java.lang.String)
,
getURI(java.lang.String)
public Enumeration getPrefixes(String uri)
이 메소드는 특정의 이름 공간 URI 에 매핑 되고 있는 접두사를 돌려줍니다. 반환값에는, 접두사 xml: 가 포함됩니다. 이름 공간 URI 에 매핑 되고 있는 접두사를 무작위로 1 개만 취득하는 경우는, 이 메소드는 아니고 getPrefix
메소드를 사용합니다.
주: 공 (디폴트)의 접두사는, 반환값의 열거에 포함되지 않습니다. 디폴트의 이름 공간의 존재를 확인하는 경우는, 인수 "" 를 지정해 getURI
를 사용해 주세요.
uri
- 이름 공간 URI
getPrefix(java.lang.String)
,
getDeclaredPrefixes()
,
getURI(java.lang.String)
public Enumeration getDeclaredPrefixes()
getPrefix(java.lang.String)
나 getPrefixes()
를 사용하는 경우와는 달라, 반환값의 열거에는, 빈 상태(empty) (디폴트)의 접두사도 포함됩니다.
getPrefixes()
,
getURI(java.lang.String)
public void setNamespaceDeclUris(boolean value)
processName()
에 의해 NSDECL
이름 공간에 배치될지 어떨지를 제어합니다. 이 변경은, 모든 문맥이 푸쉬 되기 전에게만 실시할 수가 있습니다.
IllegalStateException
- 문맥이 푸쉬 된 뒤로 설정하려고 했을 경우public boolean isNamespaceDeclUris()
|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세 : 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.