xslt를 통해 변환해야하는 다음 xmldata 입력이 있습니다. 간단히 ns : something 콘텐츠를 추출하고 싶습니다. dynamicNS 네임 스페이스는 런타임 중에 다를 수 있습니다.XLST가 네임 스페이스 접두어를 무시하지 않음
<?xml version="1.0"?>
<ns:something>
<ns:myid>1</ns:myid>
<ns:myvalue>2</ns:myvalue>
</ns:something>
나는 그것을 시도 :
<?xml version="1.0"?>
<dynamicNS:header>
<ns:something>
<ns:myid>1</ns:myid>
<ns:myvalue>2</ns:myvalue>
</ns:something>
</dynamicNS:header>
출력해야
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="*">
<ns:something>
<xsl:copy-of select="node()"/>
</ns:something>
</xsl:template>
</xsl:stylesheet>
그러나 이것은 나에게 오류 제공 : 접두사 요소에 대한 "dynamicNS"을 " dynamicNS : header "는 바인딩되지 않습니다.;
각 실행마다 다를 수 있기 때문에 dynamicNS에 대한 네임 스페이스를 추가하지는 않습니다.
원하는 출력을 얻는 올바른 방법은 무엇입니까?
감사합니다.
오류 메시지는 XML 구문 분석기에서 가져온 것으로 입력시 'dynamicNS' 접두사에 대한 네임 스페이스 선언이 없음을 알립니다. 그렇게하면 입력이 네임 스페이스 잘 구성된 XML이 아니며 네임 스페이스 정형 XML이 필요하므로 XSLT/XPath에 대한 입력으로 사용할 수 없습니다. –
Martin 감사합니다. 당신의 설명이 의미가 있습니다. 이제 네임 스페이스 선언 매뉴얼을 데이터 객체에서 생성 된 xmldata에 추가합니다. 지금 작동하지만 여전히 내 xslt 구현이 올바른 선택인지 확실하지 않습니다. 적어도 지금 결과는 괜찮습니다. 첫 번째 게시물에서 언급 한 xslt를 사용하는 것이 가장 좋은 방법입니까? – Sharmane
게시 된 스타일 시트 코드가 네임 스페이스 선언없이 리터럴 결과 요소 인'ns : something'을 사용하는 방식으로 작동하는 것을 보지 못합니다. XSLT가 네임 스페이스가 잘 구성되어 있지 않으므로 XSLT 프로세서가 어떻게 표시되는지 알 수 없습니다. 전혀 처리하지 마십시오. –