Xml 如果;匹配“;其他的
在XSLT中,我经常使用以下命令匹配节点Xml 如果;匹配“;其他的,xml,xslt,xslt-1.0,xslt-2.0,Xml,Xslt,Xslt 1.0,Xslt 2.0,在XSLT中,我经常使用以下命令匹配节点 <xsl:template match="*[local-name() = 'Proposal']/*[local-name() = 'ApplicationData']"> 从中获取节点 <?xml version="1.0" encoding="utf-8"?><?xfa generator="XFA2_4" APIVersion="2.8.9029.0"?> <xdp:xdp xmlns:xd
<xsl:template match="*[local-name() = 'Proposal']/*[local-name() = 'ApplicationData']">
从中获取节点
<?xml version="1.0" encoding="utf-8"?><?xfa generator="XFA2_4" APIVersion="2.8.9029.0"?>
<xdp:xdp xmlns:xdp="http://ns.adobe.com/xdp/" timeStamp="2013-03-01T09:48:58Z" uuid="3e3468da-104d-4532-8077-0dc001ca166b">
<xfa:datasets xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">
<xfa:data>
<Proposal xmlns="http://www.govtalk.gov.uk/planning/OneAppProposal-2006" Version="">
<oneapp:ApplicationData xmlns:oneapp="http://www.govtalk.gov.uk/planning/OneAppProposal-2006">
<oneapp:TreesHedgesWales/>
<oneapp:OtherLowCarbonEnergy/>
</oneapp:ApplicationData>
</Proposal>
...
...
匹配
<oneapp:ApplicationData xmlns:oneapp="http://www.govtalk.gov.uk/planning/OneAppProposal-2006">
<oneapp:TreesHedgesWales/>
<oneapp:OtherLowCarbonEnergy/>
</oneapp:ApplicationData>
如何确定应用程序数据是否存在,如果不存在,则插入它?您需要将逻辑添加到与“建议”元素匹配的模板中
<xsl:template match="*[local-name() = 'Proposal']">
如果希望保留建议
元素,则需要将其包装在xsl:copy
中
如果XSLT中还没有与提案
匹配的现有模板,则可以将测试添加到模板匹配本身
<xsl:template match="*[local-name() = 'Proposal'][not(*[local-name() = 'ApplicationData'])]">
<xsl:copy>
<oneapp:ApplicationData xmlns:oneapp="http://www.govtalk.gov.uk/planning/OneAppProposal-2006">
<oneapp:TreesHedgesWales/>
<oneapp:OtherLowCarbonEnergy/>
</oneapp:ApplicationData>
</xsl:copy>
</xsl:template>
正如michael.hor257k在评论中提到的,如果您在XSLT中声明名称空间,并在匹配中使用名称空间前缀,那么会更干净
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:oneapp="http://www.govtalk.gov.uk/planning/OneAppProposal-2006">
<xsl:template match="oneapp:Proposal[not(oneapp:ApplicationData)]">
<xsl:copy>
<oneapp:ApplicationData>
<oneapp:TreesHedgesWales/>
<oneapp:OtherLowCarbonEnergy/>
</oneapp:ApplicationData>
</xsl:copy>
</xsl:template>
您的问题不清楚。把它插在哪里?从哪里来顺便说一句,为什么不使用给定的名称空间,而不是可怕的*[local-name()='xyz']
?将其插入XML。。。
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:oneapp="http://www.govtalk.gov.uk/planning/OneAppProposal-2006">
<xsl:template match="oneapp:Proposal[not(oneapp:ApplicationData)]">
<xsl:copy>
<oneapp:ApplicationData>
<oneapp:TreesHedgesWales/>
<oneapp:OtherLowCarbonEnergy/>
</oneapp:ApplicationData>
</xsl:copy>
</xsl:template>