2012-11-14 28 views
0

누락 된 XML 변환,이 응답 XML을 얻을.네임 스페이스

나는 비누 - 물건을 제거하여 XML을 변환하려면, 그리고 내가 문제는이 같은 응답 XML에 비누 네임 스페이스를 추가하여 일을하는 데 XSL 변환 만드는 동안 :

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
    <Response> 
     <Result> 
     <Status>Success</Status> 
     <Text>Some text</Text> 
     </Result> 
    </Response> 
</soap:Body> 
</soap:Envelope> 

어떻게 비누 네임 스페이스가 응답 XML에 포함되어 있지 않으면이 변환을 수행 할 수 있습니까?

답변

0

내가 잘못 형성된 XML이라고합니다. 어떤 변환을 시도해도 합리적인 XSLT 파서는 "언 바운드 접두사"오류의 일부 변형을 제공합니다. 원본 문서가 네임 스페이스 사용법에 대해 "혼란 스럽기"때문에 후속 XSLT도 혼동 될 것입니다. Namespaces in XML 1.1에서

:

네임 스페이스 제약 : 접두사는 XML 또는 XMLNS하지 않는 한, 중 시작에 네임 스페이스 선언 속성에서 선언 되어 있어야합니다,

네임 스페이스 접두사를 선언 - 접두사가 사용 된 요소의 또는 조상 요소 (즉, 접두사가있는 마크 업이 발생하는 내용의 요소)에 있습니다. 또한 가장 안쪽에있는 그러한 선언 인 의 속성 값은 빈 문자열이 아니어야합니다.

이 웹 서비스를 게시 한 사람과 연락하여 응답 형식을 올바른 XML로 변경하도록해야 할 것 같습니다.

1

해당 입력이 올바른 형식이지만 네임 스페이스가 올바른 형식의 XML이 아닙니다. 당신은 비 네임 스페이스를 인식하고 다음

<xsl:template match="*[local-name() = 'soap:Envelope']"> 

같은 XSLT 구조를 사용하도록 구성되어 파서를 사용하여 DOM 트리로 구문 분석 할 수 있지만 여부 가능하므로 정확히하면 것은 당신이 얼마나 수 있습니다 그것은 당신이 사용하고있는 XSLT 프로세서에 달려 있으며, 그것을 모른 채 더 자세한 대답을 드릴 수는 없습니다.

관련 문제