2017-05-18 9 views
0

하나의 XSLTService 활동을 사용하여 XML을 변환하는 프로세스로 작업하고 있습니다. 일반 XML 소스뿐만 아니라 String 및 XML 유형의 프로세스 변수를 모두 소비해야합니다. 내 문제는 XML 형식의 프로세스 변수를 XSLT 소스 템플릿에 삽입하는 방법을 알 수 없다는 것입니다. 문자열 유형의 변수를 삽입하는 데 문제가 없습니다. 내가 변수 요소의 시작 -와 종료 태그 사이에 데이터를 삽입하는 것을 시도했다, 그러나 그것은 도움이되지 않았다Adobe AEM Forms : XSLT 소스 템플릿에 XML 변수 삽입

<xsl:variable name="stringvariable" select="'{$/process_data/@stringVariable$}'"/> 
<xsl:variable name="externalNodes" select="'{$/process_data/inputNodeNames$}'"/> 

:

내 스타일 시트의 삽입 부분입니다. 문자열 변수가 삽입되고 나중에 확인을 위해 성공적으로 인쇄됩니다. 템플릿 모두 XML-변수 (노드 집합() exsl)

<xsl:variable name="internalNodes"> 
    <root xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
    <block>$.Formularmetadata</block> 
    <block>$.Sorteringsdata</block> 
    <block>$.Metadata</block> 
    <block>$.Verksamhetsdata</block> 
    </root> 
</xsl:variable> 

그때 카운트 호출 :

는 또한 참조 (외부 동일 내용)와 로컬 변수를 작성한 하지만 로컬에만 0 이상의 값이 있습니다.

어떻게 작동합니까?

/BS

ps. 나는 그것이 솔기 데이터를 전송하기 위해 문자열 변수를 사용하는 경우 작동하는 것을 발견

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:exsl="http://exslt.org/common" extension-element-prefixes="exsl"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 

<xsl:variable name="stringvariable" select="'{$/process_data/@stringVariable$}'"/> 
<xsl:variable name="externalNodes" select="'{$/process_data/inputNodeNames$}'"/> 
<xsl:variable name="internalNodes"> 
    <root xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
    <block>$.Formularmetadata</block> 
    <block>$.Sorteringsdata</block> 
    <block>$.Metadata</block> 
    <block>$.Verksamhetsdata</block> 
    </root> 
</xsl:variable> 

<!-- Identity rule.--> 
<xsl:template match="node()|@*"> 
    <xsl:copy> 
    <xsl:apply-templates select="node()|@*"/> 
    </xsl:copy> 
</xsl:template> 

<!-- Rewrite attribute ref to work with new XML.--> 
<xsl:template match="*[local-name()='bind']/@ref"> 
    <xsl:value-of select="$stringvariable "/> 
    <xsl:value-of select="' Internal'"/><xsl:value-of select="count(exsl:node-set($internalNodes)/root/block)"/> 
    <xsl:value-of select="' External'"/><xsl:value-of select="count(exsl:node-set($externalNodes)/root/block)"/> 
</xsl:template> 
</xsl:stylesheet> 

답변

0

솜 더 experientation 후이 전체 XSL 스타일 시트입니다. 시작 태그와 끝 태그 사이에 삽입 한 다음 exsl : node-set()에 임베드 한 후 XML로 작동하도록 사용합니다.

삽입 포인트 :

<xsl:variable name="match" select="exsl:node-set($topNoder)/root/block[starts-with(current(), .)]"/> 
: 템플릿

<xsl:variable name="topNodes">'{$/process_data/@xmlTopNodes$}'</xsl:variable> 

사용