我正在寻找过滤给定 xml 数据文件的一些重要元素的 xsl 代码。以下示例显示了有关一位父亲和他的两个孩子的全部数据。
这个文件是我的输入文件:
<?xml version="1.0" encoding="UTF-8"?>
<person>
<is_parent>true</is_parent>
<name>Sam</name>
<sex>male</sex>
<age>45</age>
<body_properties>
<heigth>183</heigth>
<weight>86</weight>
<eye_color>green</eye_color>
</body_properties>
<person>
<is_parent>false</is_parent>
<name>Julia</name>
<sex>female</sex>
<age>11</age>
<body_properties>
<heigth>155</heigth>
<weight>40</weight>
<eye_color>blue</eye_color>
</body_properties>
</person>
<person>
<is_parent>false</is_parent>
<name>Tom</name>
<sex>male</sex>
<age>4</age>
<body_properties>
<heigth>100</heigth>
<weight>35</weight>
<eye_color>brown</eye_color>
</body_properties>
</person>
</person>
有时我只想拥有“最重要”的信息。例如,我需要姓名、年龄和眼睛颜色。
这些数据必须在我的输出文件中:
<?xml version="1.0" encoding="UTF-8"?>
<person>
<name>Sam</name>
<age>45</age>
<body_properties>
<eye_color>green</eye_color>
</body_properties>
<person>
<name>Julia</name>
<age>11</age>
<body_properties>
<eye_color>blue</eye_color>
</body_properties>
</person>
<person>
<name>Tom</name>
<age>4</age>
<body_properties>
<eye_color>brown</eye_color>
</body_properties>
</person>
</person>
有时我只想拥有其他“最重要”的信息。例如,我需要性别、身高和体重。当然,在这种情况下,我需要另一个 xsl 文件。
作为附加要求,xsl 必须支持没有父级的输入数据文件,例如:
<person>
<is_parent>false</is_parent>
<name>Peter</name>
<sex>male</sex>
<age>23</age>
<body_properties>
<heigth>195</heigth>
<weight>99</weight>
<eye_color>blue</eye_color>
</body_properties>
</person>
为了解释我的要求,这些例子被简化了。真正的 xml 文件要大得多,包含很多元素。
但是所有 xml 输入文件的结构都没有子文件:
<person>
...
</person>
或有孩子的结构
<person>
...
<person>
...
</person>
<person>
...
</person>
<person>
...
</person>
</person>
您对 xsl 1.0 版中的 xslt 解决方案有任何想法吗?请不要发布更改输入文件格式的建议。这对我来说是不可能的。