我正在尝试在XSLT中模拟复制函数,我想要在响应中输出的节点内的所有内容。
使用此模板
<#ftl ns_prefixes={"D": "http://milyn.codehaus.org/Smooks"} output_format="XML">
${Order.orderitem.@@markup}
这里面临2个问题
输出我被转换为&lt;,&gt;以及XML标签。我确实需要XML格式来转义像&amp;这样的无效字符。等
如何删除每个节点中出现的名称空间
我的回答是
<orderitem xmlns="http://milyn.codehaus.org/Smooks"><position>1</position><quantity>1</quantity><productid>364</productid><title>The 40YearOld</title><price>29.98</price></orderitem><orderitem xmlns="http://milyn.codehaus.org/Smooks"><position>2</position><quantity>1</quantity><productid>299</productid><title>Pulp Fiction</title><price>29.99</price></orderitem>
输入
<Order xmlns="http://milyn.codehaus.org/Smooks" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance">
<header>
<orderid>1</orderid>
<statuscode>0</statuscode>
<netamount>59.97</netamount>
<totalamount>64.92</totalamount>
<tax>4.95</tax>
<date>Wed Nov 15 13:45:28 EST 2006</date>
</header>
<customerdetails>
<username>user1</username>
<name>
<firstname>Harry</firstname>
<lastname>Fletcher</lastname>
</name>
<state>South Dakota</state>
</customerdetails>
<orderitem>
<position>1</position>
<quantity>1</quantity>
<productid>364</productid>
<title>The 40YearOld</title>
<price>29.98</price>
</orderitem>
<orderitem>
<position>2</position>
<quantity>1</quantity>
<productid>299</productid>
<title>Pulp Fiction</title>
<price>29.99</price>
</orderitem>
答案 0 :(得分:0)
防止自动转义:<!-- null -->
。 (不幸的是,XML包装方式早于自动转义,所以它仍然如此......)
防止重复${Order.orderitem.@@markup?no_esc}
- es ...你不能。问题是xmlns
- s没有orderitem
可以知道的共同祖先,共同的@@markup
可以解决这个问题,所以它做得最安全。