我在Rest API调用中有以下XML:
<opens type="array">
<open>
<account-id>123</account-id>
<campaign-id type="integer">10000</campaign-id>
<contact-id type="integer">302315</contact-id>
<browser>Other</browser>
<recorded-at type="dateTime">2016-03-12T12:52:07-05:00</recorded-at>
<contact>
<id type="integer">302315</id>
<email>someone@mailnoone.com</email>
<memberid>1255252</memberid>
</contact>
</open>
<open>
<account-id>123</account-id>
<campaign-id type="integer">10000</campaign-id>
<contact-id type="integer">302326</contact-id>
<browser>Other</browser>
<recorded-at type="dateTime">2016-03-13T12:52:07-05:00</recorded-at>
<contact>
<id type="integer">302326</id>
<email>secondopen@mailnoone.com</email>
<memberid>1255248</memberid>
</contact>
</open>
</opens>
我试图将此作为输出
<opens type="array">
<open>
<account-id>487</account-id>
<campaign-id type="integer">504084</campaign-id>
<contact-id type="integer">396056515</contact-id>
<browser>Other</browser>
<recorded-at type="dateTime">2016-03-12T12:52:07-05:00</recorded-at>
<contact-id type="integer">396056515</id>
<email>ldrmtrl@mac.com</email>
<memberid>145773617</memberid>
</open>
<open>
<account-id>123</account-id>
<campaign-id type="integer">10000</campaign-id>
<contact-id type="integer">302326</contact-id>
<browser>Other</browser>
<recorded-at type="dateTime">2016-03-13T12:52:07-05:00</recorded-at>
<contact-id type="integer">302326</id>
<email>secondopen@mailnoone.com</email>
<memberid>1255248</memberid>
</open>
</opens>
我的XSLT应该是什么样的? contact元素在每个Open元素中只出现一次。有时可能没有任何开放元素。我看到这个网站中的一些例子很相似,但无法弄清楚这一点。
谢谢, 兰契
答案 0 :(得分:0)
我想我找到了答案。当我使用以下XSLT时,它会正确加载它。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="*">
<xsl:element name="{name()}">
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<xsl:template match="//contact">
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>
如果适用,请提供更好或更快的解决方案。
谢谢, 兰契