我想变换分析下面的XML:XSLT:解析XML并重新构造XML?
<root>
<ParaList>
<Para name="p001" label="Continuous1" />
<Para name="p002" label="Continuous5" />
<Para name="p003" label="[Categorical3=1]" />
<Para name="p004" label="[Categorical3=2]" />
<Para name="p005" label="[Categorical3=3]" />
</ParaList>
<ParaMatrix>
<PCell paraName="p001" coef="1.043"/>
<PCell paraName="p002" coef="0.841"/>
<PCell paraName="p003" coef="0.907"/>
<PCell paraName="p004" coef="-0.26"/>
<PCell paraName="p005" coef="5.333"/>
</ParaMatrix>
</root>
到一个新的XML:
<root>
<PMatrix>
<NumericCell paraName="Continuous1" coef="1.043"/>
<NumericCell paraName="Continuous5" coef="0.841"/>
<CategoricalCell value="1" paraName="Categorical3" coef="0.907"/>
<CategoricalCell value="2" paraName="Categorical3" coef="-0.26"/>
<CategoricalCell value="3" paraName="Categorical3" coef="5.333"/>
</PMatrix>
</root>
在原始XML中,有3个变量Continous1,Continuous5,Categorical3。连续1 &连续5是连续数值,分类3是3个可能值(1,2,3)的分类,它们被视为3个独立参数(p003,p004,p005)。每个参数都有一个系数。 可能有更多的变量,他们不遵循任何命名转向。你只能说有些是绝对的,因为label =“[categoricalVariableName = value]”。每个分类变量,如果它有M个可能的值,则生成M个参数。
我想解析原始的XML,得到系数(系数)直接映射到变量,而不是参数。如果它是一个连续变量,
<NumericCell paraName="Continuous1" coef="1.043"/>
如果是分类变量,
<CategoricalCell value="1" paraName="Categorical3" coef="0.907"/>
<CategoricalCell value="2" paraName="Categorical3" coef="-0.26"/>
<CategoricalCell value="3" paraName="Categorical3" coef="5.333"/>
我使用XSLT 1.0版本。非常感谢你的帮助。
什么版本的XSLT?你有什么尝试? –
问题不明确。输入中总会有5个'Para'元素? –
我已经重写了我原来的问题。我正在使用XSLT版本1.0。我没有多少尝试,因为我不知道该怎么做。 Th – Fischlein