我一直在尝试使用xslt转换我的xml,它让我疯狂。
这是XML,
<env:Body xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<items xmlns="http://ws.apache.org/ns/synapse">
<profiles>
<candidate_details>
<application>
<app_id>ABC</app_id>
<position_id>RR</position_id>
</application>
</candidate_details>
<candidate_details>
<application>
<app_id>ABC2</app_id>
<position_id>RR2</position_id>
</application>
</candidate_details>
</profiles>
</items>
</env:Body>
这是XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:env="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="no"/>
<xsl:template match="env:Body/items/profiles">
<xsl:for-each select="candidate_details">
<application>
<app_id> <xsl:value-of select='application/app_id' /> </app_id>
</application>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
我的预期输出是
<application>
<app_id>
ABC
</app_id>
</application>
<application>
<app_id>
ABC2
</app_id>
</application>
根本没有打印出这种格式,只有价值,我做错了什么?请帮忙。谢谢!
PS。我知道
<items xmlns="http://ws.apache.org/ns/synapse">
是无效的命名空间,但那是xml的来源,所以我必须使用这个xml作为输入。
答案 0 :(得分:0)
需要调整一些事情
如下:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:s="http://ws.apache.org/ns/synapse"
exclude-result-prefixes="s env"
>
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes" />
<xsl:template match="/env:Body">
<xsl:for-each select="s:items/s:profiles/s:candidate_details">
<application>
<app_id>
<xsl:value-of select='s:application/s:app_id' />
</app_id>
</application>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>