猜猜你们都做得很好!!
我有一个场景需要执行以下操作:
我的xml内容如下。
`<?xml version="1.0" encoding="UTF-8" ?>
<a>
<b>
<c>
<key>One</key>
<value>Value1</value>
</c>
<c>
<key>Two</key>
<value>Value2</value>
</c>
<c>
<key>Three</key>
<value>Value3</value>
</c>
<c>
<key>Four</key>
<value>Value4</value>
</c>
<c>
<key>Five</key>
<value>Value5</value>
</c>
</b>
<d>
<e>
<Five>Check this feild</Five>
<Seven>It is extra</Seven>
<tewnty>extra</tewnty>
</e>
<f>
<Three>it is present</Three>
<Five>Came again</Five>
</f>
<g>
<Four>It is here</Four>
</g>
</d>
<n>
<Five>Dont check under n</Five>
<Six>Extra under n</Six>
<Three>Dont check under n</Three>
</n>
</a>`
现在我想检查/a/b/c/key/text()
是否作为元素名称存在
/a/d
如果为true,则复制当前键/值对。 如果不忽略此键/值对要输出。
所以我的输出应该是这样的:
`<?xml version="1.0" encoding="UTF-8" ?>
<a>
<b>
<c>
<key>Three</key>
<value>Value3</value>
</c>
<c>
<key>Four</key>
<value>Value4</value>
</c>
<c>
<key>Five</key>
<value>Value5</value>
</c>
</b>
<d>
<e>
<Five>Check this feild</Five>
<Seven>It is extra</Seven>
<tewnty>extra</tewnty>
</e>
<f>
<Three>it is present</Three>
<Five>Came again</Five>
</f>
<g>
<Four>It is here</Four>
</g>
</d>
<n>
<Five>Dont check under n</Five>
<Six>Extra under n</Six>
<Three>Dont check under n</Three>
</n>
</a>`
你能帮我解决一下XSLT吗?
我正在尝试使用if并检查local-name()
节点。
如何在XSLT中实现它?
我的问题是,我如何根据元素名称=(c / key / text())删除一个节点(在我的情况下是somevaluesomevalue)。
我希望我的问题具体。
谢谢&amp;问候 Chandru
答案 0 :(得分:1)
以下样式表使用/a/d/*/*
对local-name()
下的元素使用/a/b/*
使用xsl:key
,然后将其用作条件,以排除text()
xsl:key
下的元素值未在xsl:key
中找到任何项目。
这是一个经过修改的identity transformation,其中默认处理是保留所有内容。与使用<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="UTF-8" />
<xsl:key name="filter" match="/a/d/*/*" use="local-name()"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/a/b/c[not(key('filter', key/text()))]"/>
</xsl:stylesheet>
的第二个空模板匹配的元素可确保删除这些元素。
<a *ngIf="routePart === '' " [routerLink]="Create" />
<a *ngIf="routePart === 'xyz' " [routerLink]="xyz/Create" />