У меня есть источник XML:XSLT, сделать преобразование для дочернего узла, когда атрибут родительского узла совпадает со значением атрибута другого узла
<root>
<DataDictionary>
<DataField name="CLASS">
<Value value="0" property="valid"/>
<Value value="1" property="valid"/>
<Value value="2" property="valid"/>
</DataField>
<DataField name="COUNTRY_CODE">
<Value value="1" property="valid"/>
<Value value="2" property="valid"/>
<Value value="3" property="valid"/>
</DataField>
<DataField name="MARITAL_STATUS">
<Value value="1" property="valid"/>
<Value value="2" property="valid"/>
<Value value="3" property="valid"/>
</DataField>
</DataDictionary>
<RegressionModel targetVariable="CLASS">
<ParamMatrix>
<PCell name="COUNTRY_CODE" targetCategory="0" coefficient="12"/>
<PCell name="MARITAL_STATUS" targetCategory="0" coefficient="34"/>
</ParamMatrix>
</RegressionModel>
<root>
После преобразования, я хотел бы иметь:
<root>
<DataDictionary>
<DataField name="CLASS">
<Value value="0" property="valid"/>
<Value value="1" property="valid"/>
<Value value="2" property="valid"/>
</DataField>
<DataField name="COUNTRY_CODE">
<Value value="1" property="valid"/>
<Value value="2" property="valid"/>
<Value value="3" property="valid"/>
</DataField>
<DataField name="MARITAL_STATUS">
<Value value="1" property="valid"/>
<Value value="2" property="valid"/>
<Value value="3" property="valid"/>
</DataField>
</DataDictionary>
</Schema>
<RegressionModel targetVariable="CLASS">
<ParamMatrix>
<PCell name="COUNTRY_CODE" targetCategory="0" coefficient="12"/>
<PCell name="MARITAL_STATUS" targetCategory="0" coefficient="34"/>
</ParamMatrix>
</RegressionModel>
<!--other transformations -->
<RegressionTable targetVariable="CLASS" targetCategory="1" />
<RegressionTable targetVariable="CLASS" targetCategory="2" />
<root>
Существуют другие преобразования, которые я не перечисляю здесь. У меня проблема с элементами 2 'RegressionTable' в конце файла. Логикой, используемой для построения преобразования, является:
- получить значение атрибута 'targetVariable' элемента 'RegressionModel'. В этом случае значением является «КЛАСС».
- для элемента 'DataDictionary/DataField', где атрибут 'name' имеет то же значение, что и в шаге 1, пройти через дочерние узлы 'Value'
- для каждого элемента Value из шага 2, если его атрибут 'value' не равна к значению атрибута 'targetCategory' первого 'RegressionModel/ParamMatrix/PCell', мы добавим элемент
элемент выглядит следующим образом:
<RegressionTable
targetVariable=DataDictionary/DataField/@name
targetCategory=DataDictionary/DataField/Value/@value />
Я очень благодарен за вашу помощь. Благодарю.
Я потерялся в вашем описании. Вы хотите перечислить узлы 'Value', перечисленные в разделе' '(потому что' ') и сравнить их со значением первого' PCell'? Даже если первый «PCell» назван «COUNTRY_CODE»? –
@ michael.hor257k да. Я знаю, это звучит странно. Но это фактически часть файла модели логистической регрессии. В PCell значение targetCategory является целевым значением, которое должно быть предсказано с использованием этой модели. – Fischlein