【发布时间】:2015-04-11 04:26:15
【问题描述】:
我正在尝试转换此文档,但对 xslt 还很陌生,并且在尝试将其正确处理时获得了很多乐趣。核心节点(为简单起见被截断)如下所示
<Product prod_id="6352">
<brandId>221</brandId>
<brand>Oscar Mayer</brand>
<images>
<smallimage>text</simage>
<medimage>text</medimage>
<largeimage>text</limage>
</images>
<nutrition>
<nutritionShow>Y</nutritionShow>
<servingSize>1 SLICE</servingSize>
<servingsPerContainer>12</servingsPerContainer>
<totalCalories>60</totalCalories>
<fatCalories>35</fatCalories>
<totalFat>4</totalFat>
<totalFatPercent>6</totalFatPercent>
<totalFatUnit>g</totalFatUnit>
<saturatedFat>1.5</saturatedFat>
<saturatedFatPercent>8</saturatedFatPercent>
<saturatedFatUnit>g</saturatedFatUnit>
<transFat>0</transFat>
<transFatUnit>g</transFatUnit>
<cholesterolUnit>mg</cholesterolUnit>
</nutrition>
<prodId>6352</prodId>
</Product>
最后我想将逻辑分组的子节点作为具有适当属性名称的单个节点。
最终结果应该是这样的
<Product prod_id="6352">
<brandId>221</brandId>
<brand>Oscar Mayer</brand>
<images>
<smallimage>text</smallimage>
<medimage>text</medimage>
<largeimage>text</largeimage>
</images>
<nutrition>
<nutritionShow>Y</nutritionShow>
<servingSize>1 SLICE</servingSize>
<servingsPerContainer>12</servingsPerContainer>
<totalCalories>60</totalCalories>
<fatCalories>35</fatCalories>
<totalFat amount="4" percent="6" unit="g" />
<saturatedFat amount="1.5" percent="8" unit="g"/>
<transFat amount="0" unit="g"</>
</nutrition>
<prodId>6352</prodId>
一些关键功能是
- 对相似的属性进行分组(注意 saturatedFat 和 transFat ...略有不同)我有这些集合的离散列表。您可以使用列表或基于关系的更动态的东西,但请注意差异。
- 保留其他(不可分组的)属性
- 忽略缺少数量属性/只有单位属性的组(注意胆固醇)
提前感谢您帮助我理解这个相当复杂的转换。
【问题讨论】:
-
"我有一个这些集合的谨慎列表。" 你能发布这个列表吗?如果不是太谨慎,那就是... -- 另请说明使用的是 XSLT 1.0 还是 2.0。
-
呸!我看到你在那里做了什么。是的,自动更正得到了我。幸运的是,我没有用语法标记,但无论如何谢谢:)。我将选择谨慎,因为我想表达的关系在可以分组的属性示例列表中很清楚,毕竟我想要知识而不是我的工作完成。我的意图是解决方案可能会使用属性列表,但我不想引导人们了解我看到解决方案的方式......碰巧我可能会得到更好的东西并在此过程中学到一些东西。
-
"我的意图是解决方案可能会使用属性列表,但我不想引导人们按照我看到解决方案的方式..."其实这也是我的想法,没有你的指导。我只是想看看你有多少,它们有多么不同。我总是倾向于尽可能明确地使用 XSLT - 即使是冗长的 - 并避免
*[name() = ...]类型的尴尬和低效的表达。 -
该示例显示了 3 种属性中的每一种。其他的就像人们所期望的那样......你看到饱和脂肪也可以预期不饱和和单不饱和和多不饱和每个类别中有5-12个。类别为 1. 数量、单位和百分比 2. 数量和单位 3. 独立
-
"其他的都如预期的那样......" 哈哈,我什么都没期待 - 我知道关于营养的布基斯......无论如何,我已经添加了我的建议。顺便说一句,在您的示例中,胆固醇属于哪个类别?
标签: xml xslt xslt-grouping