带XPATH的XSLT白名单

时间:2017-07-14 13:38:50

标签: xml xslt xpath xml-parsing

我想创建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>

非常感谢您的帮助。

0 个答案:

没有答案