我有以下 XML 摘录。完整的 XML 是 OVF 定义。
<?xml version="1.0" encoding="UTF-8"?>
<Envelope xmlns="http://schemas.dmtf.org/ovf/envelope/1" xmlns:cim="http://schemas.dmtf.org/wbem/wscim/1/common" xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1" xmlns:rasd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData" xmlns:vmw="http://www.vmware.com/schema/ovf" xmlns:vssd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" x xml:lang="en-US">
<Item>
<rasd:Caption ovf:msgid="network.eth0.caption"/>
<rasd:Connection>eth0</rasd:Connection>
<rasd:Description ovf:msgid="network.eth0.description"/>
<rasd:ElementName>eth0</rasd:ElementName>
<rasd:InstanceID>13</rasd:InstanceID>
<rasd:ResourceSubType>VmxNet3</rasd:ResourceSubType>
<rasd:ResourceType>10</rasd:ResourceType>
</Item>
<Item>
<rasd:Caption ovf:msgid="network.eth1.caption"/>
<rasd:Connection>eth1</rasd:Connection>
<rasd:Description ovf:msgid="network.eth1.description"/>
<rasd:ElementName>eth1</rasd:ElementName>
<rasd:InstanceID>14</rasd:InstanceID>
<rasd:ResourceSubType>VmxNet3</rasd:ResourceSubType>
<rasd:ResourceType>10</rasd:ResourceType>
</Item>
<Item>
<rasd:Caption ovf:msgid="network.eth2.caption"/>
<rasd:Connection>eth2</rasd:Connection>
<rasd:Description ovf:msgid="network.eth2.description"/>
<rasd:ElementName>eth2</rasd:ElementName>
<rasd:InstanceID>15</rasd:InstanceID>
<rasd:ResourceSubType>VmxNet3</rasd:ResourceSubType>
<rasd:ResourceType>10</rasd:ResourceType>
</Item>
<Item>
<rasd:Caption ovf:msgid="network.eth3.caption"/>
<rasd:Connection>eth3</rasd:Connection>
<rasd:Description ovf:msgid="network.eth3.description"/>
<rasd:ElementName>eth3</rasd:ElementName>
<rasd:InstanceID>16</rasd:InstanceID>
<rasd:ResourceSubType>VmxNet3</rasd:ResourceSubType>
<rasd:ResourceType>10</rasd:ResourceType>
</Item>
</Envelope>
我试图在该行<rasd:AutomaticAllocation>false</rasd:AutomaticAllocation>
之前插入该行,<rasd:Connection>eth*</rasd:Connection>
但不是在所有行上。到目前为止,我已经获得了以下 XSL 并且它可以工作,但问题是我必须对要禁用的每个接口进行硬编码。
<xsl:template match="rasd:Connection[text()='eth0']">
<xsl:if test="$disableEths='true'">
<xsl:element name="rasd:AutomaticAllocation">false</xsl:element>
<xsl:copy-of select="."/>
</xsl:if>
</xsl:template>
<xsl:template match="rasd:Connection[text()='eth1']">
<xsl:if test="$disableEths='true'">
<xsl:element name="rasd:AutomaticAllocation">false</xsl:element>
<xsl:copy-of select="."/>
</xsl:if>
</xsl:template>
<xsl:template match="rasd:Connection[text()='eth2']">
<xsl:if test="$disableEths='true'">
<xsl:element name="rasd:AutomaticAllocation">false</xsl:element>
<xsl:copy-of select="."/>
</xsl:if>
</xsl:template>
有没有办法让用户传入一个包含他们想要禁用的分隔值列表的参数,如果没有输入参数,不要禁用它们中的任何一个?如果重要,请使用 xsltproc 作为处理器。