我的xml输入如下
<?xml version="1.0" encoding="UTF-8" ?>
<EmployeeRequest xmlns="http://www.example.org"
<EmployeeDetails>
<FirstName>Khan</FirstName>
<LastName>Joshi</LastName>
<Age>30</Age>
</EmployeeDetails>
<EmployeeDetails>
<FirstName>Josh</FirstName>
<LastName>Luis</LastName>
<Age>29</Age>
</EmployeeDetails>
</EmployeeRequest>
但是我的输出应该如下所示。
FirstName, LastName, Age
Khan, joshi,30
Josh,Luis,29
这里的EmployeeDetails是Unbound.Using模板如何解决这个问题?
请告诉我如何获得此输出
答案 0 :(得分:0)
路径//*[not(*)]
为您提供了所有叶元素(因为您似乎对根EmployeeRequest
和容器EmployeeDetails
不感兴趣),然后<xsl:value-of select="//*[not(*)]/name()" separator=", "/>
会输出名称。这假定是一个XSLT 2.0处理器。
如果您想保持通用,可以使用
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:value-of select="/*/*[1]/*/local-name()" separator=", "/>
<xsl:text> </xsl:text>
<xsl:apply-templates select="/*/*"/>
</xsl:template>
<xsl:template match="*/*">
<xsl:if test="position() > 1">
<xsl:text> </xsl:text>
</xsl:if>
<xsl:value-of select="*" separator=", "/>
</xsl:template>
</xsl:transform>
请参阅http://xsltransform.net/gWmuiK1以获取示例。
答案 1 :(得分:0)
这是一个纯XSLT 1.0解决方案:
{"response":{
"face":{
"value":"true",
"confidence":55
},
"gender":{
"value":"male",
"confidence":73
},
...
}}