xslt - XSLT:如果不存在则创建节点
问题描述
我知道类似的问题已经存在,但似乎没有一个对我有用。
很快,我就有了带有标签“Lokal”的 XML 文件,在大多数情况下它不会出现,但它应该出现。没有让事情变得更容易:我还需要将“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>
<DaneAdresowe>
<AdresGlownegoMiejscaWykonywaniaDzialalnosci>
<Budynek>3a</Budynek>
<Lokal_test/>
<Wojewodztwo>podlaskie</Wojewodztwo>
</AdresGlownegoMiejscaWykonywaniaDzialalnosci>
</DaneAdresowe>
</InformacjeOWpisie>
<InformacjeOWpisie>
<DaneAdresowe>
<AdresGlownegoMiejscaWykonywaniaDzialalnosci>
<Budynek>8r</Budynek>
<Lokal_test>2</Lokal_test>
<Wojewodztwo>mazowieckie</Wojewodztwo>
</AdresGlownegoMiejscaWykonywaniaDzialalnosci>
</DaneAdresowe>
</InformacjeOWpisie>
</Dane>
这个问题(XSLT: create node if not exists似乎是我的问题的原因,但是在尝试使用它时不起作用。不知道为什么?
<xsl:template match="InformacjeOWpisie/DaneAdresowe/AdresGlownegoMiejscaWykonywaniaDzialalnosci/Lokal">
<Lokal_test>
<xsl:apply-templates select="@*|node()" />
</Lokal_test>
</xsl:template>
编辑:
当我摆脱父母Lokal_test
消失时。我使用下面的代码对父母说“再见”:
<xsl:template match="InformacjeOWpisie/DaneAdresowe/AdresGlownegoMiejscaWykonywaniaDzialalnosci">
<xsl:apply-templates select="@*|node()" />
</xsl:template>
解决方案
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="AdresGlownegoMiejscaWykonywaniaDzialalnosci/Budynek">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
<xsl:choose>
<xsl:when test="exists(following-sibling::Lokal)">
<Lokal_test>
<xsl:value-of select="following-sibling::Lokal"/>
</Lokal_test>
</xsl:when>
<xsl:when test="not(following-sibling::Lokal)">
<xsl:element name="Lokal_test"/>
</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template match="Lokal"/>
推荐阅读
- swift - 为 MKClusterAnnotation 设置 MKMarkerAnnotationView 的 glyphText
- git - git 错误:RPC 失败,curl 56 GnuTLS recv 错误(-110)
- angular - Angular 6 反应式表单 Validators.minLength
- azure-active-directory - AAD B2B 协作:使用附加信息标记外部隐藏 AAD 中的用户
- c# - 在 mvc 应用程序中找不到视图
- r - R按列中的条件从文件列表中选择多个文件并保存在新文件夹中
- authentication - 如何验证 Kubernetes 服务帐户令牌 (JWT)
- mysql - 在视图 Mysql 中使用以当前年份结尾的数据库
- php - 从编辑器运行 PHP 帮助脚本
- python - Python CGI 调用另一个在 Raspberry 中运行传感器的 CGI 脚本