我想创建XSLT 1.0转换,以便使用XPATH将XML元素列入白名单。
我的XML看起来像这样:
if(-not(Get-Variable PSScriptRoot -Scope Script)){
$PSScriptRoot = Split-Path $script:MyInvocation.MyCommand.Path
}
$Replace = Read-Host -Prompt 'To Replace'
$New = Read-Host -Prompt 'With'
Get-ChildItem -LiteralPath $PSScriptRoot |Rename-Item -NewName {$_.Name.Replace($Replace,$New)}
我的XSLT我正在开发并且不适用于xpath,但它适用于elemenet名称(我需要xpath):
<ns:stuff>
<ns:things>
<ns:currency>somecurrency</ns:currency>
<ns:currency_code/>
<ns:currency_code2/>
<ns:currency_code3/>
<ns:currency_code4/>
</ns:things>
</ns:stuff>
我想得到:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ns="some:ns">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<ns:WhiteList>
<name>//stuff/things/currency</name>
<name>//stuff/things/currency_code3</name>
</ns:WhiteList>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match=
"*[not(descendant-or-self::*[name()=document('')/*/ns:WhiteList/*])]"/>
</xsl:stylesheet>
非常感谢您的帮助。