我正在研究一个XSLT,它需要复制保持相同结构的整个XML,并根据条件过滤掉某些节点。
在下面的示例中,我只需要保留IsBusinness = Y
的节点<CompanyTypes>
<Parent1>
<ChildNode1>Test</ChildNode1>
<ChildNode2>Test</ChildNode2>
<CompanyType>
<CompanyTypeID>1</CompanyTypeID>
<CompanyTypeName>Individual</CompanyTypeName>
<CompanyTypeDesc>Individual</CompanyTypeDesc>
<IsBusiness>N</IsBusiness>
</CompanyType>
</Parent1>
<Parent1>
<ChildNode1>Test1</ChildNode1>
<ChildNode2>Test</ChildNode2>
<CompanyType>
<CompanyTypeID>1</CompanyTypeID>
<CompanyTypeName>Individual</CompanyTypeName>
<CompanyTypeDesc>Individual</CompanyTypeDesc>
<IsBusiness>Y</IsBusiness>
</CompanyType>
</Parent1>
<Parent1>
<ChildNode1>Test3</ChildNode1>
<ChildNode2>Test9</ChildNode2>
<CompanyType>
<CompanyTypeID>1</CompanyTypeID>
<CompanyTypeName>Individual</CompanyTypeName>
<CompanyTypeDesc>Individual</CompanyTypeDesc>
<IsBusiness>Y</IsBusiness>
</CompanyType>
</Parent1>
</CompanyTypes>
所需的输出
<CompanyTypes>
<Parent1>
<ChildNode1>Test1</ChildNode1>
<ChildNode2>Test</ChildNode2>
<CompanyType>
<CompanyTypeID>1</CompanyTypeID>
<CompanyTypeName>Individual</CompanyTypeName>
<CompanyTypeDesc>Individual</CompanyTypeDesc>
<IsBusiness>Y</IsBusiness>
</CompanyType>
</Parent1>
<Parent1>
<ChildNode1>Test3</ChildNode1>
<ChildNode2>Test9</ChildNode2>
<CompanyType>
<CompanyTypeID>1</CompanyTypeID>
<CompanyTypeName>Individual</CompanyTypeName>
<CompanyTypeDesc>Individual</CompanyTypeDesc>
<IsBusiness>Y</IsBusiness>
</CompanyType>
</Parent1>
</CompanyTypes>
答案 0 :(得分:0)
要省略除包含Parent1
=='Y'以外的IsBusiness
个元素,
您需要为此类元素包括一个空模板:
<xsl:template match="Parent1[not(CompanyType/IsBusiness = 'Y')]"/>
当然,脚本还应该包含身份模板。
因此整个脚本如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="Parent1[not(CompanyType/IsBusiness = 'Y')]"/>
<xsl:template match="@*|node()">
<xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:0)
检查此代码:-
<xsl:template match="node() | @*">
<xsl:copy><xsl:apply-templates select="node() | @*"/></xsl:copy>
</xsl:template>
<xsl:template match="Parent1/CompanyType[IsBusiness != 'Y']"/>
答案 2 :(得分:0)
这就是您需要的。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"lambda:InvokeAsync",
"lambda:InvokeFunction",
"lambda:UpdateFunctionCode",
"lambda:UpdateFunctionConfiguration"
],
"Resource": "arn:aws:lambda:ap-southeast-2:123456789012:function:my-function"
}
]
}