내 서블릿에서 xml 응답을 HTML 페이지로 보내고 있습니다. xmlhttprequest 객체의 xmlresponse 객체를 통해 수신합니다. 내 XML 문서에 요소로 xsl : stylesheet가 포함되어 있습니다.이 요소를 추출하여 내 Java 스크립트에서 해당 xslt 코드를 실행하려고합니다.
가능합니까? 이 내 XML 코드 :xml을 파싱하고 javascript에서 xslt 요소를 추출하는 방법
<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
Version="2.0" IssueInstant="2012-05-22T13:40:52:390" ProtocolBinding="urn:oasis:na
mes:tc:SAML:2.0:bindings:HTTP-POST" AssertionConsumerServiceURL="localhos
t:8080/consumer.jsp">
<UserID>
xyz
</UserID>
<testing>
text
</testing>
<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
http://localhost:8080/saml/SProvider.jsp
</saml:Issuer>
<xslt>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="text" />
<xsl:template match="/">
UserID : <xsl:copy-of select="//UserID"/>
testing : <xsl:copy-of select="//testing"/>
</xsl:template>
</xsl:stylesheet>
</xslt>
</samlp:AuthnRequest>
나는 아약스 응답에서이 XML 문자열을 일단, 나는 XML로 그것을 변환하려면 XSLT 부분을 추출하고 그것을 실행하고 텍스트 영역에 출력을 표시하려면 .
EDIT2
이 코드에 어떤 문제가 :
var xmlDoc=xmlhttp.responseXML;
//var xmltext=new XMLSerializer().serializeToString(xmlDoc);
var xsltProcessor = new XSLTProcessor();
var element=xmlDoc.getElementsByTagNameNS("http://www.w3.org/1999/XSL/Transform","stylesheet");//
//document.forms['my']['signature'].value=xmltext;
var stylesheet=xsltProcessor.importStylesheet(element[0]);
var result=xsltProcessor.transformToDocument(xmlDoc);
var xmltext1=new XMLSerializer().serializeToString(result);
document.forms['my']['signature2'].value = xmltext1;
XSLT 변환의 출력 (xmltext1) 인 -
<transformiix:result xmlns:transformiix="http://www.mozilla.org/TransforMiix">
UserID : 1212
Testing : 1212
</transformiix:result>
그러나 당신은 XSLT 코드에서 볼 경우, outputmethod는 "text"로 설정됩니다. 그렇다면 xml 태그가 출력에 왜 포함되어 있습니까?
대답
This
는 EDIT2에 대한 exlpanation을 제공합니다. 답변 주셔서 감사합니다 :)
코드 조각을 사용해 보았습니다. 나는 내가 어디로 잘못 갔는지 알 수 없다. 편집을 참조하십시오. – Ashwin
@Ashwin 게시 한 코드를 사용해 보셨습니까? 당신이 추가 한 것은 크게 다릅니다. – Yoshi
그 점도 확인하겠습니다. – Ashwin