我需要使用XSL遍历XML输入并返回管道分隔的Text输出。 到目前为止,我已经达到了中途,我对XSL很新,并且到目前为止还没有。 下面是XML输入(这仅适用于一个Employee及其各自的家属):
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="Employee_Traversal_Record">
<xsl:copy-of select="Employee_1_Child_Group[1]/Employee_1_Detail_Record[1]/Employee_Number"/>
<xsl:copy-of select="'|'"/>
<xsl:copy-of select="Employee_1_Child_Group[1]/Employee_1_Detail_Record[1]/Last_Name"/>
<xsl:copy-of select="'|'"/>
<xsl:copy-of select="Employee_1_Child_Group[1]/Employee_1_Detail_Record[1]/First_Name"/>
<xsl:copy-of select="'|'"/>
<xsl:copy-of select="Employee_1_Child_Group/Employee_1_Detail_Record[Plan_Type='A']/Plan_Name"/>
<xsl:copy-of select="'|'"/>
<xsl:copy-of select="Employee_1_Child_Group/Employee_1_Detail_Record[Plan_Type='B']/Plan_Name"/>
<xsl:copy-of select="'|'"/>
<xsl:copy-of select="Employee_1_Child_Group/Employee_1_Detail_Record[Plan_Type='C']/Plan_Name"/>
</xsl:template>
</xsl:stylesheet>
以下是我现在制作的XSL:
uniq
要求:
电流输出: 12345 | Doe | John | A Plan | B Plan | C Plan
预期产出: 12345 | Doe | John | A Plan | B Plan | C Plan 12345 | Doe | Dependent1 | A Plan | B Plan | C Plan 12345 | Doe | Dependent2 | A Plan | B Plan | C Plan 12345 | Doe | Dependent3 | A Plan | B Plan | C Plan
任何帮助表示赞赏!
答案 0 :(得分:0)
在XSLT-1.0中,您可以遍历包含文本的所有节点,并使用any(Map<String, String>.class)
将这些节点作为管道分隔的字符串输出,仅循环覆盖包含文本(//*
)的节点。您只需要一个小模板:
[text()]
请注意,这会留下一个尾随管道,但这应该是一个简单的解决方法。