2013-03-30 2 views
0

이름 공간 코드를 추가하는 중에 오류가 발생했습니다.XSLT에서 이름 공간을 추가하는 중 오류가 발생합니다

while 루프에서 네임 스페이스 코드를 추가했습니다. 첫 번째 반복에서는 네임 스페이스 코드가 제대로 작동합니다. 두 번째 반복에서는 오류가 발생합니다.

오류 : 첫 번째 iteration.It에 대한 루프 프로세스 여러 레코드가이 두 번째 반복에 대한 자란다고 할 수있는 동안 나는 잠시 loop.The 내부의 아래에 추가 Namesapces 코드를 사용하고

exception class="oracle.xml.parser.v2.XMLDOMException"> 
invalid character : in name 
<stack> 
<f>oracle.xml.util.XMLUtil.validateQualifiedName#525</f> 
<f>oracle.xml.parser.v2.XMLDocument.createElementNS#2705</f> 
<f>oracle.xml.parser.v2.XMLDocument.otherImportNode#2350</f> 
<f>oracle.xml.parser.v2.XMLDocument.importNode#2326</f> 
<f>oracle.xml.parser.v2.XMLDocument.otherImportNode#2459</f> 
<f>oracle.xml.parser.v2.XMLDocument.importNode#2326</f> 
<f>com.collaxa.cube.xml.dom.DOMUtil.copyElement#558</f> 
<f>com.collaxa.cube.xml.dom.DOMUtil.copyObjHelper#300</f> 

주는 오류.

추가 네임 스페이스 코드 :

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:vbs="http://www.w3.org/1999/XSL/Transform" xmlns:msxml="urn:schemas-microsoft-com:xslt"> 
    <xsl:output omit-xml-declaration="yes" /> 
    <xsl:template match="node()|@*"> 
     <xsl:copy> 
      <xsl:apply-templates select="node()|@*" /> 
     </xsl:copy> 
    </xsl:template> 


<!-- Just change the match="/*" to match="*" ; if you want to add namespace in all elements --> 
    <xsl:template match="*"> 
     <xsl:element name="inp1:{local-name()}" namespace="http://xmlns.oracle.com/pcbpel/adapter/db/sp/Call856OutboundProcedure1"> 
      <xsl:apply-templates select="node()|@*" /> 
     </xsl:element> 
    </xsl:template> 
</xsl:stylesheet> 
+0

소스 XML은 어떻게 생겼습니까? while 루프를 사용한다고 가정 할 때 – JLRishe

+0

실제 변환을 사용하면 주요 XSLT 프로세서 (11 개)에서 정상적으로 작동합니다. 네. 아마도 이것은 오라클의 XSLT 프로세서의 버그. –

답변

0

당신은 여기에 오히려 스파 스 정보를 제공하고,하지만 난 <xsl:element> 대신의 스타일 시트의 루트 네임 스페이스 URI를 지정하는이 방법을 (시도 제안 :

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
     xmlns:vbs="http://www.w3.org/1999/XSL/Transform" 
     xmlns:msxml="urn:schemas-microsoft-com:xslt" 
     xmlns:inp1="http://xmlns.oracle.com/pcbpel/adapter/db/sp/Call856OutboundProcedure1"> 
    <xsl:output omit-xml-declaration="yes" /> 
    <xsl:template match="node()|@*"> 
     <xsl:copy> 
      <xsl:apply-templates select="node()|@*" /> 
     </xsl:copy> 
    </xsl:template> 


<!-- Just change the match="/*" to match="*" ; if you want to add namespace in all elements --> 
    <xsl:template match="*"> 
     <xsl:element name="inp1:{local-name()}"> 
      <xsl:apply-templates select="node()|@*" /> 
     </xsl:element> 
    </xsl:template> 
</xsl:stylesheet> 
관련 문제