我需要将值传递给datamapper并将其检索到map字段。在下面的InputXML中,'页面'如图所示重复元素。我的输出应该只有那个book对象,其中pages元素与input相匹配。 (即;我通过myVariable传递100作为页面的值。因此输出应该只包含100页的book元素)。
<set-session-variable variableName="myVariable" value="100" />
<data-mapper:transform doc:name="XML To XML" config-ref="xml_to_xml" >
<data-mapper:input-arguments>
<data-mapper:input-argument key="myVariable">#[sessionVars.myVariable]</data-mapper:input-argument>
</data-mapper:input-arguments>
</data-mapper:transform>
InputXML:
<catalogue>
<books>
<book>
<name>book1</name>
<author>author1</author>
<pages>100</pages>
</book>
<book>
<name>book2</name>
<author>author2</author>
<pages>200</pages>
</book>
<book>
<name>book3</name>
<author>author3</author>
<pages>300</pages>
</book>
</books>
<writeups>
<a>1</a>
</writeups>
<catalogue>
OutputXML:
<catalogue2>
<books>
<book>
<name>book1</name>
<author>author1</author>
<pages>100</pages>
</book>
<writeups>
<a>1</a>
</writeups>
<catalogue2>
方法1:
//Catalogue/books[inputArguments.myVariable=Catalogues/books/book/pages]/book/pages
在页面的xpath规则中,我试图选择这样一个book对象,它具有pages值作为传递的输入参数。但这种做法引发了一个例外
org.jetel.exception.JetelRuntimeException: net.sf.saxon.trans.StaticError: Undeclared variable in a standalone expression
请您更正xpath表达式吗?
答案 0 :(得分:0)
我认为你不能直接在XPath表达式中使用输入参数。也许您应该首先使用输入参数将其添加到有效负载(XML),然后再执行第二次数据映射,在第二次转换中使用此添加的字段:
http://www.mulesoft.org/documentation/display/33X/Using+Input+Arguments