如何在不改变结构的情况下去除某些部分
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>
让我们看看我是否可以重新表述这个问题....
我有一些大 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>