Я знаю, что подобные вопросы уже есть, но ни один из них, похоже, не работает для меня.Особенно, когда речь идет об упрощении структуры XML.
Итак, в скором времени у меня есть файл XML с тегом "Lokal", который в большинстве случаев не появляется, но должен.Не облегчая ситуацию: мне также нужно изменить имя «Lokal», скажем, «Lokal_test».Моя цель - изменить имя узла (если существует) или создать его и переименовать (если не существует).Данные из XML будут импортированы в данные MS Access, поэтому они должны идеально соответствовать таблице ...
Пример XML:
<Dane>
<InformacjeOWpisie>
<DaneAdresowe>
<AdresGlownegoMiejscaWykonywaniaDzialalnosci>
<Budynek>3a</Budynek>
<Wojewodztwo>podlaskie</Wojewodztwo>
</AdresGlownegoMiejscaWykonywaniaDzialalnosci>
</DaneAdresowe>
</InformacjeOWpisie>
<InformacjeOWpisie>
<DaneAdresowe>
<AdresGlownegoMiejscaWykonywaniaDzialalnosci>
<Budynek>8r</Budynek>
<Lokal>2</Lokal>
<Wojewodztwo>mazowieckie</Wojewodztwo>
</AdresGlownegoMiejscaWykonywaniaDzialalnosci>
</DaneAdresowe>
</InformacjeOWpisie>
</Dane>
Желаемый вывод:
<Dane>
<InformacjeOWpisie>
<Budynek>3a</Budynek>
<Lokal_test/>
<Wojewodztwo>podlaskie</Wojewodztwo>
</InformacjeOWpisie>
<InformacjeOWpisie>
<Budynek>8r</Budynek>
<Lokal_test>2</Lokal_test>
<Wojewodztwo>mazowieckie</Wojewodztwo>
</InformacjeOWpisie>
</Dane>
Я уже просил этот код в ЭТОМ вопросе.
Код ниже работал:
<!-- Handles the replacement of the 'Lokal' element -->
<xsl:template match="AdresGlownegoMiejscaWykonywaniaDzialalnosci/Lokal">
<Lokal_test>
<xsl:apply-templates select="node()|@*" />
</Lokal_test>
</xsl:template>
<!-- Creates a new 'Lokal_test' element if no 'Lokal' element exists -->
<xsl:template match="AdresGlownegoMiejscaWykonywaniaDzialalnosci[not(Lokal)]">
<xsl:copy>
<xsl:apply-templates select="node()/following-sibling::Wojewodztwo/preceding-sibling::*|@*" />
<!-- Copy nodes before 'Wojewodztwo' -->
<Lokal_test />
<xsl:apply-templates select="Wojewodztwo|Wojewodztwo/following-sibling::*|@*" />
<!-- Copy nodes after 'Wojewodztwo' (including) -->
</xsl:copy>
</xsl:template>
... но применение кода для удаления AdresGlownegoMiejscaWykonywaniaDzialalnosci
удаляет также тег Lokal_test
.
<xsl:template match="InformacjeOWpisie/DaneAdresowe/AdresGlownegoMiejscaWykonywaniaDzialalnosci">
<xsl:apply-templates select="@*|node()" />
</xsl:template>
Пожалуйста, помогите!