如何在不改变结构的情况下去除某些部分

How to remove certain parts without changing the structure

让我们看看我是否可以重新表述这个问题....

我有一些大 XML 文件,我想在不更改日期结构的情况下从中删除某些数据。

如果您查看下面的源代码 XML,您会发现在不同的层级都有“单一部件”,

parts/assembly/mainpart/proxy/singlepart

或者只是

parts/mainpart/proxy/singlepart

每个单件中都有一个零件。当部件的名称以特定单词开头或具有特定值的角色时,我希望将单个部件排除在外。在所有其他方面,文件应该保持不变。

来源XML '''

<modelExtract xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<header>
<modelFilename>C:\Dump\March 1.dwg</modelFilename>
<project>
  <name>Advance Steel Training</name>
  <number>AST987</number>
  <client>Hopeless Eng</client>
  <designer>He Did It</designer>
  <detailer>Not Me</detailer>
</project>
<extractId>MyModel.ModelExtracts.Key</extractId>
<updateIndex id="MyModel.ModelExtracts.State"/>
</header>
<selection key="22009">
  <base>AllMainparts</base>
  <DerivedDocuments>1</DerivedDocuments>
</selection>
<parts>
  <assembly name="Lot 1">
    <mainpart id="B4D5" num="C7" quantity="1">
      <explicitQuantity>1</explicitQuantity>
      <proxy ACADID="5906" basepart="33E" id="5905">
        <assemblyWeight>882396.39</assemblyWeight>
        <assemblyExactWeight>879283.91</assemblyExactWeight>
        <collisionSize x="6087.749" y="861.135" z="600.000"/>
        <ApprovalStatus>Not Set</ApprovalStatus>
        <GalvanizingConstructionClass>None</GalvanizingConstructionClass>
        <GalvanizingDetailClass>None</GalvanizingDetailClass>
        <GalvanizingConfidence>None</GalvanizingConfidence>
        <singlepart id="B4BE" num="M1023" quantity="1">
          <explicitQuantity>1</explicitQuantity>
          <part ACADID="33F" class="Beam" dstvName="UC356x368x129" id="33E" name="UC356x368x129">
              <explicitQuantity>1</explicitQuantity>
              <role key="Column" name="Column"/>
              <length>6049.338</length>
              <paintArea>13095606.902</paintArea>
              <numHoles>18</numHoles>
              <ObjectTopLevel>24079.339</ObjectTopLevel>
              <ObjectBottomLevel>18030.001</ObjectBottomLevel>
              <material key="S275JR" name="S275JR"/>
              <coating key="CAS" name="Coating as specified"/>
              <weight>780364.60</weight>
              <exactWeight>779397.56</exactWeight>
              <weightPerMeter>129000.00</weightPerMeter>
              <density>7850.00</density>
              <section key="UniversalColumn BS EN10210-2 1990#@§@#UC356x368x129" name="UC356x368x129"/>
              <sysLength>6000.000</sysLength>
              <sawLength>6049.338</sawLength>
              <angleX1>0.0000</angleX1>
              <angleY1>0.0000</angleY1>
              <angleX2>0.0000</angleX2>
              <angleY2>0.0000</angleY2>
              <SawCutInfo>-1</SawCutInfo>
              <SawLengthFlangeAtStart>0.000</SawLengthFlangeAtStart>
              <SawLengthWebAtStart>0.000</SawLengthWebAtStart>
              <SawLengthFlangeAtEnd>0.000</SawLengthFlangeAtEnd>
              <SawLengthWebAtEnd>0.000</SawLengthWebAtEnd>
              <ElementID>9</ElementID>
          </part>
        </singlepart>
        <singlepart id="B4F4" num="none-5" quantity="4">
          <explicitQuantity>4</explicitQuantity>
          <part ACADID="8D7F" class="SpecialPart" dstvName="Captive Nut M16" id="8D80" name="Captive Nut M16">
              <explicitQuantity>1</explicitQuantity>
              <denotation>nut16</denotation>
              <length>27.000</length>
              <paintArea>0.000</paintArea>
              <ObjectTopLevel>23905.596</ObjectTopLevel>
              <ObjectBottomLevel>23882.213</ObjectBottomLevel>
              <commodity>Captive Nut M16</commodity>
              <density>0.00</density>
              <width>23.383</width>
              <blockname>nut16</blockname>
          </part>
          <equalpart ACADID="8D7C" id="8D7D" name="Captive Nut M16">
              <explicitQuantity>1</explicitQuantity>
          </equalpart>
          <equalpart ACADID="8D79" id="8D7A" name="Captive Nut M16">
              <explicitQuantity>1</explicitQuantity>
          </equalpart>
          <equalpart ACADID="8D73" id="8D72" name="Captive Nut M16">
              <explicitQuantity>1</explicitQuantity>
          </equalpart>
        </singlepart>
      </proxy>
      <anchorPatternOnSite ACADID="99E8" class="AnchorPattern" id="99E7" name="M20 x 300 HOLDING DOWN BOLTS 4.6 - Bright Zinc Plated - NaW" nameBolt="M20 x 300 HD BOLT" num="anc-1000" setkey="1">
        <explicitQuantity>1</explicitQuantity>
        <set key="MuS" name="NaW"/>
        <numBolts>4</numBolts>
        <role key="Anchor_Bolt#1" name="Anchor Bolt"/>
        <standard key="HOLDING DOWN BOLTS" name="HOLDING DOWN BOLTS"/>
        <diameter>20.000</diameter>
        <material key="4.6" name="4.6"/>
        <coating key="BZP" name="Bright Zinc Plated"/>
        <density>0.00</density>
        <boltLength>300.000</boltLength>
        <unfoldedLength>300.000</unfoldedLength>
        <holeTolerance>4.000</holeTolerance>
        <mountLocation>0</mountLocation>
        <ConnectedPartsIds>59B4,5905;</ConnectedPartsIds>
      </anchorPatternOnSite>
    </mainpart>
    <mainpart id="59C8" ncFile="C1.nc" num="C1" quantity="3">
      <explicitQuantity>3</explicitQuantity>
      <proxy ACADID="5908" basepart="340" id="5907">
        <assemblyWeight>882396.39</assemblyWeight>
        <assemblyExactWeight>879420.05</assemblyExactWeight>
        <collisionSize x="6087.749" y="861.135" z="600.000"/>
        <ApprovalStatus>Not Set</ApprovalStatus>
        <GalvanizingConstructionClass>None</GalvanizingConstructionClass>
        <GalvanizingDetailClass>None</GalvanizingDetailClass>
        <GalvanizingConfidence>None</GalvanizingConfidence>
        <singlepart id="599B" num="M1004" quantity="1">
          <explicitQuantity>1</explicitQuantity>
          <part ACADID="341" class="Beam" dstvName="UC356x368x129" id="340" name="UC356x368x129">
              <explicitQuantity>1</explicitQuantity>
              <role key="Column#2" name="Column"/>
              <length>6049.338</length>
              <paintArea>13095606.902</paintArea>
              <numHoles>14</numHoles>
              <ObjectTopLevel>24079.339</ObjectTopLevel>
              <ObjectBottomLevel>18030.001</ObjectBottomLevel>
              <material key="S275JR" name="S275JR"/>
              <coating key="CAS" name="Coating as specified"/>
              <weight>780364.60</weight>
              <exactWeight>779533.70</exactWeight>
              <weightPerMeter>129000.00</weightPerMeter>
              <density>7850.00</density>
              <section key="UniversalColumn BS EN10210-2 1990#@§@#UC356x368x129" name="UC356x368x129"/>
              <sysLength>6000.000</sysLength>
              <sawLength>6049.338</sawLength>
              <angleX1>0.0000</angleX1>
              <angleY1>0.0000</angleY1>
              <angleX2>0.0000</angleX2>
              <angleY2>0.0000</angleY2>
              <SawCutInfo>-1</SawCutInfo>
              <SawLengthFlangeAtStart>0.000</SawLengthFlangeAtStart>
              <SawLengthWebAtStart>0.000</SawLengthWebAtStart>
              <SawLengthFlangeAtEnd>0.000</SawLengthFlangeAtEnd>
              <SawLengthWebAtEnd>0.000</SawLengthWebAtEnd>
              <ElementID>10</ElementID>
              <ElementID>198</ElementID>
              <ElementID>202</ElementID>
          </part>
        </singlepart>
        <singlepart id="59B4" ncFile="F1005.nc" num="F1005" quantity="1">
          <explicitQuantity>1</explicitQuantity>
          <part ACADID="9249" class="Plate" dstvName="FL600x30" id="9248" name="FL600x30">
              <explicitQuantity>1</explicitQuantity>
              <role key="Baseplate" name="Base Plate"/>
              <externalName index="1" name="FL600x30"/>
              <length>600.000</length>
              <paintArea>792000.000</paintArea>
              <numHoles>4</numHoles>
              <ObjectTopLevel>18030.000</ObjectTopLevel>
              <ObjectBottomLevel>18000.000</ObjectBottomLevel>
              <material key="S275JR" name="S275JR"/>
              <coating key="CAS" name="Coating as specified"/>
              <weight>84780.00</weight>
              <exactWeight>84364.65</exactWeight>
              <density>7850.00</density>
              <thickness>30.000</thickness>
              <width>600.000</width>
              <area1>360000.000</area1>
              <area2>360000.000</area2>
              <contourLength>2400.000</contourLength>
              <ElementID>208</ElementID>
              <ElementID>191</ElementID>
              <ElementID>212</ElementID>
          </part>
        </singlepart>
      </proxy>
      <equalpart ACADID="5916" explicitQuantity="1" id="5915">
        <assemblyWeight>882396.39</assemblyWeight>
        <assemblyExactWeight>879420.05</assemblyExactWeight>
      </equalpart>
      <anchorPatternOnSite ACADID="9262" class="AnchorPattern" id="9261" name="M20 x 300 HOLDING DOWN BOLTS 4.6 - Bright Zinc Plated - NaW" nameBolt="M20 x 300 HD BOLT" num="anc-1000" setkey="1">
        <explicitQuantity>1</explicitQuantity>
        <set key="MuS" name="NaW"/>
        <numBolts>4</numBolts>
        <role key="Anchor_Bolt#1" name="Anchor Bolt"/>
        <standard key="HOLDING DOWN BOLTS" name="HOLDING DOWN BOLTS"/>
        <diameter>20.000</diameter>
        <material key="4.6" name="4.6"/>
        <coating key="BZP" name="Bright Zinc Plated"/>
        <density>0.00</density>
        <boltLength>300.000</boltLength>
        <unfoldedLength>300.000</unfoldedLength>
        <holeTolerance>4.000</holeTolerance>
        <mountLocation>0</mountLocation>
        <ConnectedPartsIds>59B4,5907;</ConnectedPartsIds>
        <equalpart ACADID="92F6" id="92F5" name="M20 x 300 HOLDING DOWN BOLTS 4.6 - Bright Zinc Plated - NaW">
          <explicitQuantity>1</explicitQuantity>
          <ConnectedPartsIds>59B4,5915;</ConnectedPartsIds>
        </equalpart>
        <equalpart ACADID="9240" id="923F" name="M20 x 300 HOLDING DOWN BOLTS 4.6 - Bright Zinc Plated - NaW">
          <explicitQuantity>1</explicitQuantity>
          <ConnectedPartsIds>59B4,5917;</ConnectedPartsIds>
        </equalpart>
      </anchorPatternOnSite>
    </mainpart>
    <boltPatternOnSite ACADID="9A0C" class="BoltPattern" id="9A0B" name="M24 x 70 ISO 4017 Screw 8.8 - Bright Zinc Plated - CE Mark BZP" nameBolt="Hexagon head screw ISO 4017 - M24x70 - 8.8" num="bo1000" setBoltsType="1" setkey="2">
      <explicitQuantity>1</explicitQuantity>
      <set key="CE Mark BZP" name="CE Mark BZP"/>
      <numBolts>1</numBolts>
      <role key="Bolt#1" name="Bolt"/>
      <standard key="ISO 4017 Screw" name="ISO 4017 Screw"/>
      <diameter>24.000</diameter>
      <material key="8.8" name="8.8"/>
      <coating key="BZP" name="Bright Zinc Plated"/>
      <density>0.00</density>
      <boltLength>70.000</boltLength>
      <fitLength>37.500</fitLength>
      <fitLengthIncrement>0.000</fitLengthIncrement>
      <holeTolerance>2.000</holeTolerance>
      <mountLocation>0</mountLocation>
      <ConnectedPartsIds>59B3,5919;599B,5915;</ConnectedPartsIds>
    </boltPatternOnSite>
  </assembly>
  <assembly name="Lot 4">
    <mainpart id="692D" num="EB1" quantity="3">
      <explicitQuantity>3</explicitQuantity>
      <proxy ACADID="A564" basepart="A561" id="A563">
        <assemblyWeight>29641.60</assemblyWeight>
        <assemblyExactWeight>29641.60</assemblyExactWeight>
        <collisionSize x="4000.000" y="275.882" z="100.475"/>
        <ApprovalStatus>Not Set</ApprovalStatus>
        <GalvanizingConstructionClass>None</GalvanizingConstructionClass>
        <GalvanizingDetailClass>None</GalvanizingDetailClass>
        <GalvanizingConfidence>None</GalvanizingConfidence>
        <singlepart id="693D" num="EB1" quantity="1">
          <explicitQuantity>1</explicitQuantity>
          <part ACADID="A562" class="Beam" dstvName="TPP 250FE20(15)" id="A561" name="TPP 250FE20(15)">
              <explicitQuantity>1</explicitQuantity>
              <role key="Eaves_Beam#2" name="Cold Rolled Eaves Beam"/>
              <length>4000.000</length>
              <paintArea>3792000.000</paintArea>
              <ObjectTopLevel>24179.344</ObjectTopLevel>
              <ObjectBottomLevel>23903.462</ObjectBottomLevel>
              <material key="S275JR" name="S275JR"/>
              <coating key="CAS" name="Coating as specified"/>
              <weight>29641.60</weight>
              <exactWeight>29641.60</exactWeight>
              <weightPerMeter>7410.40</weightPerMeter>
              <density>7850.00</density>
              <section key="ThomasPanels_EB_FE#@§@#TP_FE 250FE20(15)" name="TPP 250FE20(15)"/>
              <sysLength>4000.000</sysLength>
              <sawLength>4000.000</sawLength>
              <angleX1>0.0000</angleX1>
              <angleY1>0.0000</angleY1>
              <angleX2>0.0000</angleX2>
              <angleY2>0.0000</angleY2>
              <SawCutInfo>0</SawCutInfo>
              <ElementID>590</ElementID>
              <ElementID>591</ElementID>
              <ElementID>592</ElementID>
          </part>
        </singlepart>
      </proxy>
      <equalpart ACADID="A566" explicitQuantity="1" id="A565">
        <assemblyWeight>29641.60</assemblyWeight>
        <assemblyExactWeight>29641.60</assemblyExactWeight>
      </equalpart>
      <equalpart ACADID="A568" explicitQuantity="1" id="A567">
        <assemblyWeight>29641.60</assemblyWeight>
        <assemblyExactWeight>29641.60</assemblyExactWeight>
      </equalpart>
    </mainpart>
    <mainpart id="6933" num="CL9" quantity="1">
      <explicitQuantity>1</explicitQuantity>
      <proxy ACADID="B293" basepart="B28E" id="B292">
        <assemblyWeight>2595.73</assemblyWeight>
        <assemblyExactWeight>2261.65</assemblyExactWeight>
        <collisionSize x="1968.200" y="299.999" z="18.820"/>
        <ApprovalStatus>Not Set</ApprovalStatus>
        <GalvanizingConstructionClass>None</GalvanizingConstructionClass>
        <GalvanizingDetailClass>None</GalvanizingDetailClass>
        <GalvanizingConfidence>None</GalvanizingConfidence>
        <singlepart id="6943" num="CL9" quantity="1">
          <explicitQuantity>1</explicitQuantity>
          <part ACADID="B28F" class="Beam" dstvName="0.42 BMT" id="B28E" name="0.42 BMT">
              <explicitQuantity>1</explicitQuantity>
              <role key="Cladding_profile#85" name="Cladding Profile"/>
              <length>1968.200</length>
              <paintArea>1576252.457</paintArea>
              <ObjectTopLevel>25666.930</ObjectTopLevel>
              <ObjectBottomLevel>25083.346</ObjectBottomLevel>
              <material key="S275JR" name="S275JR"/>
              <coating key="CAS" name="Coating as specified"/>
              <commodity>[8][None][None]</commodity>
              <weight>2595.73</weight>
              <exactWeight>2261.65</exactWeight>
              <weightPerMeter>1318.83</weightPerMeter>
              <density>7850.00</density>
              <section key="Lysaght Easyclad#@§@#0.42 BMT" name="0.42 BMT"/>
              <sysLength>1968.200</sysLength>
              <sawLength>1968.200</sawLength>
              <angleX1>0.0000</angleX1>
              <angleY1>0.0000</angleY1>
              <angleX2>0.0000</angleX2>
              <angleY2>0.0000</angleY2>
              <SawCutInfo>0</SawCutInfo>
              <ElementID>762</ElementID>
          </part>
        </singlepart>
      </proxy>
    </mainpart>
    <boltPatternOnSite ACADID="B3B1" class="BoltPattern" id="B3B0" name="M16 x 30 SET 8.8 - Bright Zinc Plated - W+WN" nameBolt="M16 x 30 SET - 8.8" num="bo1007" setBoltsType="1" setkey="11">
      <explicitQuantity>1</explicitQuantity>
      <set key="W+WN" name="W+WN"/>
      <numBolts>1</numBolts>
      <role key="Bolt#2" name="Bolt"/>
      <standard key="SET" name="SET"/>
      <diameter>16.000</diameter>
      <material key="8.8" name="8.8"/>
      <coating key="BZP" name="Bright Zinc Plated"/>
      <density>0.00</density>
      <boltLength>30.000</boltLength>
      <fitLength>5.400</fitLength>
      <fitLengthIncrement>0.000</fitLengthIncrement>
      <holeTolerance>2.000</holeTolerance>
      <mountLocation>0</mountLocation>
      <ConnectedPartsIds>693E,B3F2;6946,A571;6944,B3FC;</ConnectedPartsIds>
    </boltPatternOnSite>
  </assembly>
  <mainpart id="DF80" num="RL6" quantity="8">
    <explicitQuantity>8</explicitQuantity>
    <proxy ACADID="DEC0" basepart="DD88" id="DEBF">
      <assemblyWeight>2159.94</assemblyWeight>
      <assemblyExactWeight>2159.94</assemblyExactWeight>
      <collisionSize x="1083.149" y="33.700" z="33.700"/>
      <ApprovalStatus>Not Set</ApprovalStatus>
      <GalvanizingConstructionClass>None</GalvanizingConstructionClass>
      <GalvanizingDetailClass>None</GalvanizingDetailClass>
      <GalvanizingConfidence>None</GalvanizingConfidence>
      <singlepart id="DF94" num="RL6" quantity="1">
        <explicitQuantity>1</explicitQuantity>
        <part ACADID="DD89" class="Beam" dstvName="RO33.7X2.6" id="DD88" name="RO33.7X2.6">
          <explicitQuantity>1</explicitQuantity>
          <role key="Railing_Post_Landing" name="Railing Post Landing"/>
          <length>1083.149</length>
          <paintArea>114674.796</paintArea>
          <ObjectTopLevel>22083.149</ObjectTopLevel>
          <ObjectBottomLevel>21000.000</ObjectBottomLevel>
          <material key="S275JR" name="S275JR"/>
          <coating key="CAS" name="Coating as specified"/>
          <weight>2159.94</weight>
          <exactWeight>2159.94</exactWeight>
          <weightPerMeter>1994.13</weightPerMeter>
          <density>7850.00</density>
          <section key="Pipe nach DIN#@§@#RO33.7X2.6" name="RO33.7X2.6"/>
          <sysLength>1100.000</sysLength>
          <sawLength>1083.149</sawLength>
          <angleX1>0.0000</angleX1>
          <angleY1>0.0000</angleY1>
          <angleX2>0.0000</angleX2>
          <angleY2>0.0000</angleY2>
          <SawCutInfo>0</SawCutInfo>
          <ElementID>3226</ElementID>
          <ElementID>3222</ElementID>
          <ElementID>3223</ElementID>
          <ElementID>3224</ElementID>
          <ElementID>3225</ElementID>
          <ElementID>3227</ElementID>
          <ElementID>3221</ElementID>
          <ElementID>3220</ElementID>
        </part>
      </singlepart>
    </proxy>
    <equalpart ACADID="DECE" explicitQuantity="1" id="DECD">
      <assemblyWeight>2159.94</assemblyWeight>
      <assemblyExactWeight>2159.94</assemblyExactWeight>
    </equalpart>
  </mainpart>
  <mainpart id="DF86" num="RL11" quantity="1">
    <explicitQuantity>1</explicitQuantity>
    <proxy ACADID="DED0" basepart="DDA8" id="DECF">
      <assemblyWeight>9381.60</assemblyWeight>
      <assemblyExactWeight>9381.60</assemblyExactWeight>
      <collisionSize x="4704.610" y="33.700" z="33.700"/>
      <ApprovalStatus>Not Set</ApprovalStatus>
      <GalvanizingConstructionClass>None</GalvanizingConstructionClass>
      <GalvanizingDetailClass>None</GalvanizingDetailClass>
      <GalvanizingConfidence>None</GalvanizingConfidence>
      <singlepart id="DF9A" num="RL11" quantity="1">
        <explicitQuantity>1</explicitQuantity>
        <part ACADID="DDA9" class="Beam" dstvName="RO33.7X2.6" id="DDA8" name="RO33.7X2.6">
          <explicitQuantity>1</explicitQuantity>
          <role key="Railing_Handrail_Stair" name="Railing Handrail Stair"/>
          <length>4704.610</length>
          <paintArea>498084.922</paintArea>
          <ObjectTopLevel>22102.631</ObjectTopLevel>
          <ObjectBottomLevel>19137.369</ObjectBottomLevel>
          <material key="S275JR" name="S275JR"/>
          <coating key="CAS" name="Coating as specified"/>
          <weight>9381.60</weight>
          <exactWeight>9381.60</exactWeight>
          <weightPerMeter>1994.13</weightPerMeter>
          <density>7850.00</density>
          <section key="Pipe nach DIN#@§@#RO33.7X2.6" name="RO33.7X2.6"/>
          <sysLength>4738.312</sysLength>
          <sawLength>4704.610</sawLength>
          <angleX1>0.0000</angleX1>
          <angleY1>0.0000</angleY1>
          <angleX2>0.0000</angleX2>
          <angleY2>0.0000</angleY2>
          <SawCutInfo>-1</SawCutInfo>
          <SawLengthFlangeAtStart>0.000</SawLengthFlangeAtStart>
          <SawLengthWebAtStart>0.000</SawLengthWebAtStart>
          <SawLengthFlangeAtEnd>0.000</SawLengthFlangeAtEnd>
          <SawLengthWebAtEnd>0.000</SawLengthWebAtEnd>
          <ElementID>3228</ElementID>
        </part>
      </singlepart>
    </proxy>
  </mainpart>
  <mainpart id="DF8D" num="NONE8" quantity="8">
    <explicitQuantity>8</explicitQuantity>
    <proxy ACADID="DF26" basepart="DE6F" id="DF25">
      <assemblyWeight>0.00</assemblyWeight>
      <assemblyExactWeight>0.00</assemblyExactWeight>
      <collisionSize x="92.000" y="48.250" z="46.000"/>
      <ApprovalStatus>Not Set</ApprovalStatus>
      <GalvanizingConstructionClass>None</GalvanizingConstructionClass>
      <GalvanizingDetailClass>None</GalvanizingDetailClass>
      <GalvanizingConfidence>None</GalvanizingConfidence>
      <singlepart id="DFA6" num="NONE8" quantity="1">
        <explicitQuantity>1</explicitQuantity>
        <part ACADID="DE70" class="SpecialPart" dstvName="26-6Model" id="DE6F" name="26-6Model">
          <explicitQuantity>1</explicitQuantity>
          <denotation>26-6Model</denotation>
          <length>92.000</length>
          <paintArea>0.000</paintArea>
          <ObjectTopLevel>21623.000</ObjectTopLevel>
          <ObjectBottomLevel>21577.000</ObjectBottomLevel>
          <material key="S275JR" name="S275JR"/>
          <commodity>26-6Model</commodity>
          <density>7850.00</density>
          <width>48.250</width>
          <blockname>26-6Model</blockname>
        </part>
      </singlepart>
    </proxy>
    <equalpart ACADID="DF42" explicitQuantity="1" id="DF41">
      <assemblyWeight>0.00</assemblyWeight>
      <assemblyExactWeight>0.00</assemblyExactWeight>
    </equalpart>
  </mainpart>
</parts>

'''

这是我的 XSLT 文件: '''

    <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
  
  <xsl:template match="/">
    <modelExtract>
      <xsl:for-each select="node()">
        <xsl:apply-templates select="node()"/>
      </xsl:for-each>
    </modelExtract>
  </xsl:template>

  <xsl:template match="header">
    <xsl:copy-of select="."/>
  </xsl:template>

  <xsl:template match="selection">
    <xsl:copy-of select="."/>
  </xsl:template>

  <xsl:template match="tables">
    <xsl:copy-of select="."/>
  </xsl:template>

  <xsl:template match="parts">
    <parts>
        <xsl:for-each select="mainpart">
            <xsl:call-template name="handlePart">
                <xsl:with-param name="currNodePart" select="current()"/>
            </xsl:call-template>
        </xsl:for-each>
        
        <xsl:for-each select="assembly">
            <xsl:for-each select="mainpart">
                <xsl:call-template name="handlePart">
                    <xsl:with-param name="currNodePart" select="current()"/>
                </xsl:call-template>
            </xsl:for-each>
        </xsl:for-each>
        
        <xsl:for-each select="singlepart">
            <xsl:call-template name="handlePart">
                <xsl:with-param name="currNodePart" select="current()"/>
            </xsl:call-template>
        </xsl:for-each>
        
    </parts>
  </xsl:template>

  <xsl:template match="DerivedDocuments">
    <xsl:copy-of select="."/>
  </xsl:template>

  <xsl:template name="handlePart">
    <xsl:param name="currNodePart"/>
    <xsl:variable name="Namee" select="$currNodePart/proxy/singlepart/part/section/@key"/>
    <xsl:variable name="ModelRolee" select="$currNodePart/proxy/singlepart/part/role/@key"/>
    <xsl:variable name="StaringStringVarB" select="substring($Namee, 1, 3)"/>
    <xsl:choose>
      <xsl:when test="not
                    (
                    starts-with($Namee,'AGBrown')
                    or
                    starts-with($Namee,'Albion')
                    or
                    starts-with($Namee,'Ayrshire')
                    or
                    starts-with($Namee,'BWIndustries')
                    or
                    starts-with($Namee,'Hi Span')
                    or
                    starts-with($Namee,'HiSpan')
                    or
                    starts-with($Namee,'Kingspan')
                    or
                    starts-with($Namee,'Usr Kingspan')
                    or
                    starts-with($Namee,'KSB')
                    or
                    starts-with($Namee,'KSP')
                    or
                    starts-with($Namee,'Metsec')
                    or
                    starts-with($Namee,'BWIndustries')
                    or
                    starts-with($Namee,'Steadmans')
                    or
                    starts-with($Namee,'Usr Steel Sections')
                    or
                    starts-with($Namee,'Steel Sections')
                    or
                    starts-with($Namee,'Tegral')
                    or
                    starts-with($Namee,'ThomasPanels')
                    or
                    starts-with($Namee,'Usr Thomas Panels')
                    or
                    starts-with($Namee,'Ultra')
                    or
                    starts-with($Namee,'Usr Ultra')
                    or
                    starts-with($ModelRolee, 'Cladding_profile')
                    )">
        <xsl:copy-of select="."/>
      </xsl:when>
    </xsl:choose>
  </xsl:template>
</xsl:stylesheet>

'''

抱歉,如果它们很长,我已尝试删除大部分数据,但需要留下一些以显示结构。我找不到如何附加示例文件。我已经试着格式化清楚了。

正如我所说,我的 XSLT 返回 XML,没有不需要的部分,但也没有“程序集”级别。如果可能的话,我想要一种更简单的方式来表示跳过不需要的部分。

谢谢。

你的问题后的评论听起来好像 <xsl:template match="mainpart//singlepart"/> 加上身份转换模板就是你 need/want。

在你编辑之后,根据你的解释,我认为你想要身份转换加上一个空模板用于你想要成为 removed/omitted 的元素(singlepart?)例如

<xsl:template match="singlepart[part/section/@key[starts-with(.,'AGBrown')
                    or
                    starts-with(.,'Albion')
                    or
                    starts-with(.,'Ayrshire')
                    or
                    starts-with(.,'BWIndustries')
                    or
                    starts-with(.,'Hi Span')
                    or
                    starts-with(.,'HiSpan')
                    or
                    starts-with(.,'Kingspan')
                    or
                    starts-with(.,'Usr Kingspan')
                    or
                    starts-with(.,'KSB')
                    or
                    starts-with(.,'KSP')
                    or
                    starts-with(.,'Metsec')
                    or
                    starts-with(.,'BWIndustries')
                    or
                    starts-with(.,'Steadmans')
                    or
                    starts-with(.,'Usr Steel Sections')
                    or
                    starts-with(.,'Steel Sections')
                    or
                    starts-with(.,'Tegral')
                    or
                    starts-with(.,'ThomasPanels')
                    or
                    starts-with(.,'Usr Thomas Panels')
                    or
                    starts-with(.,'Ultra')
                    or
                    starts-with(.,'Usr Ultra')] or part/role/@key[starts-with(., 'Cladding_profile')]]"/>

身份转换模板是

<xsl:template match="@* | node()">
  <xsl:copy>
    <xsl:apply-templates select="@* | node()"/>
  </xsl:copy>
</xsl:template>