我需要选择 Property1 和 SubProperty2 并删除任何其他属性。我需要做这个未来的证明,以便添加到 xml 的任何新属性都不会破坏验证。默认情况下,iow 的新字段必须被剥离。
<Root>
<Property1/>
<Property2/>
<Thing>
<SubProperty1/>
<SubProperty2/>
</Thing>
<VariousProperties/>
</Root>
所以在我的 xslt 中我这样做了:
<xsl:template match="Property1">
<Property1>
<xsl:apply-templates/>
</Property1>
</xsl:template>
<xsl:template match="/Thing">
<SubProperty1>
<xsl:apply-templates select="SubProperty1" />
</SubProperty1>
</xsl:template>
<xsl:template match="*" />
最后一行应该去掉我没有定义为选中的任何内容。
这适用于选择我的 property1,但它总是为 SubProperty 选择一个空节点。* 上的匹配似乎在我对它们的匹配起作用之前去除了更深的对象。我删除了 * 上的匹配项,它选择了带有值的子属性。那么,我怎样才能选择子属性并仍然剥离我不使用的所有内容。
感谢您的任何建议。