我有一个要求,我必须使用 xslt 进行转换,已知标签要被替换,但是对于任何未识别的标签都应该放在一个属性包中(比如在 c# 中)类型的模式。例如。我想转换以下 XML:
<Envelope>
<body>
<MyOperation_reply_data>
<operation_name>1211</operation_name>
<operation_short_desc>SCAMA</operation_short_desc>
<operation_long_desc>C4 SCAM PIECE PART ASSEMBLY
</operation_long_desc>
<primary_units>UNITS</primary_units>
<firstAttribute>123</firstAttribute>
<sampleone>554</sampleone>
<area>newarea</area>
<group>samplegroup</group>
<whatever>uuu</whatever>
</MyOperation_reply_data>
</body>
</Envelope>
到这种格式:
<Envelope>
<Body>
<OperationInfo OperationName="MyOperation">
<OperationData>
<Operation>MyOperation</Operation>
<ShortDescription>MyDescription</ShortDescription>
<LongDescription>MyLongDescription</LongDescription>
<PrimaryUnits>UNITS</PrimaryUnits>
<Attributes>
<Attribute Name="firstAttribute" Value="123" />
<Attribute Name="sampleone" Value="554" />
<Attribute Name="area" Value="newarea" />
<Attribute Name="group" Value="samplegroup" />
<Attribute Name="whatever" Value="uuu" />
</Attributes>
</OperationData>
</OperationInfo>
</Body>
如您所见,只有操作、操作长/短描述和主要单位是可识别的标签。我还想把它放在上面的属性列表中。“其他”标签列表可能会增长 - 所以我们的想法是将所有其他标签放入这种属性包类型的模式中。
我面临的挑战是我无法为每个或识别“其他”标签。我尝试了 selected not(self:: with or 语句,但没有太大帮助。