2009-06-03 5 views
3

Java XML 변환 패키지에는 URIResolver이라는 개념이 있습니다. "document(), xsl : import 또는 xsl에 사용 된 URI를 처리하기 위해 프로세서에서 호출 할 수있는이 인터페이스를 구현하는 객체입니다. : 원본 개체에 포함하십시오. " 당신의 XSL이Java URIResolver 개념이 C# 및 .NET에 있습니까?

<xsl:import href="URI"/> 

같은 가져 오기가있는 경우

그래서, 이것은 당신이 URI를 가지고 당신의 선택의 Source에 매핑 할 수 있습니다 - 아마 데이터베이스에서 오는, 또는 어쩌면 당신은 매핑 할 다른 URI 에의 URI xsl:import hrefxsl:variable을 사용할 수 없으므로이 방법이 유용 할 수 있습니다.

다음은 변환기를 작성하고 변환하는 샘플 Java 코드입니다.

URIResolver uriResolver = new MyURIResolver(); // sample 
TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
transformerFactory.setURIResolver(uriResolver); 
Transformer transformer = transformerFactory.newTransformer(); 
transformer.setURIResolver(uriResolver); 
transformer.transform(xml, result); 

참고를 사용해 URIResolver를 사용하는 코드에서 두 곳이 있습니다 :

  • 하는 TransformerFactory는 setURIResolver - "로 사용되는 URI를 해결하기 위해서 변환시에 디폴트로 사용되는 오브젝트 설정 문서(), xsl : import 또는 xsl : include의
  • 변압기 setURIResolver - " 문서()에 사용 된 URI를 해결하는 데 사용할 개체를 설정하십시오."

질문 : C# 및 .NET의 Java URIResolver와 비슷한 개념이 있습니까?

답변

3

예, XmlResolver이라고합니다.

XmlResolver

여기 그것이 작동하는 방법에 대한 깊이있는 더있어, 등, 당신은 다양한 API에서 사용할 수 있습니다 의미한다 (XmlReaderSettings를 통해) XmlDocument, XmlReader 같은 XslCompiledTransformSystem.Xml 추상화 중 하나입니다 그리고 당신은 어떻게 할 수 implement your own resolver.

기본적으로 이러한 다양한 API는 및 file://으로 시작하는 URI를 확인할 수있는 XmlUrlResolver을 사용합니다.

또한 외부 엔터티를 확인하기 위해 기본값 ResolveEntity methodXmlReader에 다시 정의 할 수 있습니다.

+0

감사합니다.XmlResolver는 "XSL 스타일 시트에있는 include 및 import 요소를 처리해야합니다."이며 document() 함수를 사용하려면 XsltSettings 개체를 만들어야한다는 것을 알았습니다 (http://msdn.microsoft.com/ en-us/library/ms163499.aspx). –

0

예, 아날로그가 있습니다.
IXmlNamespaceResolverXmlNamespaceManager이 인터페이스를 구현합니다.

@Lame Duck, 나는 당신이 질문을 오해 한 것 같아요.

+0

아니요, 이것은 Java의 해결 자 클래스와 동일하지 않습니다. 네임 스페이스 바인딩에서 사용되는 네임 스페이스 접두사를 네임 스페이스 접두사로 결정합니다. 그들은 외부 엔티티를 검색하지 않습니다. 네임 스페이스는 URL처럼 보이지만 이름 부분 일뿐 실제 위치가 아닙니다. – Abel

관련 문제