2012-06-04 3 views
0

xslt를 사용하여 xml을 변환하고 싶지만 중요한 변수는 요청에서옵니다.xquery에서 xslt로 매개 변수 전달

let $transform := doc("projekt.xsl") 
let $serialization-options := 'method=xml media-type=text/xml omit-xml-declaration=yes indent=no' 
let $params := 
<parameters> 
    <param name="output.omit-xml-declaration" value="yes"/> 
    <param name="output.indent" value="yes"/> 
    <param name="output.media-type" value="text/html"/> 
    <param name="output.method" value="xhtml"/> 
    <param name="param.name" value="topicid" /> 
    <param name="param.select" value="{$topid}"/> 
</parameters> 

return 
    transform:transform($doc, $transform, $params, $serialization-options) 

파일 project.xsl가 여기에 있습니다 : :

<xsl:param name="topicid"/> 

과 :

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:param name="topicid"/> 

<xsl:template match="/"> 
    <xsl:value-of select="$topicid"/> 
    <xsl:apply-templates select="discussflow/message[@topic=$topicid]"/> 
</xsl:template> 

<xsl:template name="msg" match="//message"> 
    .......... 
</xsl:template> 

나는 TU가 '선택'속성을 추가하고 싶은 나는 그런 XQuery를 가지고 $ topid 값은 xquery에서 지정됩니다.

저는 여기에 java와 같은 것을 보았습니다 : http://www.techrepublic.com/article/pass-parameters-to-xsl-templates-programmatically/1044596 하지만 xquery에서는 작동하지 않습니다.

나는 dB에게 존재 사용 1.4.1

편집 :

변환 : https://en.wikibooks.org/wiki/XQuery/XQuery_and_XSLT

+1

transform : transform은 표준 XQuery 기능이 아닙니다. 사용하는 XQuery 구현에 의해 제공되는 확장. 따라서 사람들에게 구현이 무엇인지 말해주는 것이 도움이 될 것입니다. –

+0

네임 스페이스 변형 : 변형은 http://exist-db.org/xquery/transform 모듈에서 제공됩니다. 공식 문서 링크 : https://en.wikibooks.org/wiki/XQuery/XQuery_and_XSLT – damik

답변

0

내가 익숙하지 않다 :

공식 문서가 여기에있다 http://exist-db.org/xquery/transform 네임 스페이스입니다 변환 이 API가 있지만이 아이디어가 어디서 왔는지는 알 수 없습니다.

<param name="param.name" value="topicid" /> 
<param name="param.select" value="{$topid}"/> 

문서의 내 독서는 스타일 시트가 매개 변수라는 이름의 한 TopicID이있는 경우, 당신이 사용해야하는 쿼리가 당신의 XSLT 문서에

<param name="topicid" value="{$topid}"/> 
1

같은 것을 통과 기대한다는 것입니다 :

<xsl:param name="param.select" select="default value" /> 
<xsl:param name="output.omit-xml-declaration" select="default value""/> 
<xsl:param name="output.indent" select="default value"/> 
<xsl:param name="output.media-type" select="default value"/> 
<xsl:param name="output.method" select="default value"/> 
<xsl:param name="param.name" select="default value" /> 
<xsl:param name="param.select" select="default value"/> 

즉, 매개 변수의 이름은 xquery에 정의 된 것과 동일해야합니다. 이러한 매개 변수가 없으면 (예 : 테스트 목적으로 xslt를 실행하면 ...)