...或者也许以某种方式获得孩子的内容?
大家好,我正在使用 STX,因为我有大量的 XML 文件。
我有一些意见
<?xml version="1.0" encoding="UTF-8"?>
<ME>
<DataContainer id="1">
<attributes>
<DataType>vsDataF</DataType>
<vsDataF>
<label>lable-F</label>
<zzz>100</zzz>
</vsDataF>
</attributes>
<DataContainer id="1">
<attributes>
<DataType>vsData1</DataType>
<vsData1>
<label>lable-1</label>
<zzz>1000</zzz>
</vsData1>
</attributes>
</DataContainer>
<DataContainer id="1">
<attributes>
<DataType>vsData2</DataType>
<vsData2>
<label>lable-2</label>
<zzz>2000</zzz>
</vsData2>
</attributes>
</DataContainer>
</DataContainer>
<DataContainer id="2">
<attributes>
<DataType>vsDataG</DataType>
<vsDataG>
<label>lable-G</label>
<zzz>200</zzz>
</vsDataG>
</attributes>
</ME>
我需要得到这样的输出
<?xml version="1.0" encoding="UTF-8"?>
<main>
<vsDataF>
<id>1</id>
<label>lable-F</label>
<zzz>100</zzz>
<vsData1>
<id>1</id>
<label>lable-1</label>
<zzz>1000</zzz>
</vsData1>
<vsData2>
<id>1</id>
<label>lable-2</label>
<zzz>2000</zzz>
</vsData2>
</vsDataF>
<vsDataG>
<id>2</id>
<label>lable-G</label>
<zzz>200</zzz>
</vsDataG>
</main>
我写了一个部分完成的转换
<stx:transform
version="1.0"
xmlns:stx="http://stx.sourceforge.net/2002/ns"
output-method="xml">
<stx:variable name="table_name"/>
<stx:template match="/">
<main>
<stx:process-children/>
</main>
</stx:template>
<!-- DataContainters -->
<stx:template match="ME/DataContainer/attributes/DataType">
<stx:assign name="table_name" select="."/>
<stx:element name="{$table_name}">
<id>
<stx:value-of select="../../@id"/>
</id>
</stx:element>
</stx:template>
</stx:transform>
我知道,stx:process 很少,例如 stx:process-children、stx:process-self、stx:process-siblings,但这种情况下它不起作用。