Мне нужна ваша помощь по исправлению моего xslt.xslt: удаление узла на основе его дочернего элемента value
Мое требование состоит в том, чтобы удалить определенный дочерний узел на основании значения его дециентов (внука).
в примере ниже, я должен написать XSLT, который дает мне XML, содержащий которого умерший "SID" значение, не равное "1113181"
Входной XML:
<CDM CDMVersion="1.3" FType="Transactional" FOID="85b40b86-e6f1-4813-a5f4-0b98c90bd72d" CreationDateTime="2016-08-19T19:04:25" xmlns="http://www.example.com/ns/CDM/v1.3" xmlns:xyz="http://www.example.com/ns/CDM/MData">
<TestData EduOID="LX4211-204" MDataVersionOID="34" xyz:AuditSubCategoryName="Verify">
<SubData SubKey="5117f771-790f-4cde-b261-1a2db0dcd04b" xyz:SubKeyType="SubUUID" xyz:SubName="204-0114-002">
<SRef LocOID="LX4211204_0114"/>
<SubEventData EduEventOID="EOT" EduEventRepeatKey="EOT[1]" xyz:InstanceId="76194">
<FmData FmOID="VS2" FmRepeatKey="1" xyz:DataPageId="388465">
<IGroupData IGroupOID="VS2" xyz:RecordId="1044557">
<IData ItemOID="VS2.VSORRES4_2" TransactionType="Upsert" xyz:Verify="Yes">
<Record>
<TesterRef TesterOID="bballardamad1"/>
<LocRef LocOID="LX4211204_0114"/>
<DateTimeStamp>2016-08-16T17:07:15</DateTimeStamp>
<ReasonForChange/>
<SID>1113181</SID>
</Record>
</IData>
</IGroupData>
</FmData>
</SubEventData>
</SubData>
</TestData>
<TestData EduOID="LX4211-204" MDataVersionOID="34" xyz:AuditSubCategoryName="QueryClose">
<SubData SubKey="5117f771-790f-4cde-b261-1a2db0dcd04b" xyz:SubKeyType="SubUUID" xyz:SubName="204-0114-002">
<SRef LocOID="LX4211204_0114"/>
<SubEventData EduEventOID="EOT" EduEventRepeatKey="EOT[1]" xyz:InstanceId="76194">
<FmData FmOID="VS2" FmRepeatKey="1" xyz:DataPageId="388465">
<IGroupData IGroupOID="VS2" xyz:RecordId="1044557">
<IData ItemOID="VS2.VSORRES4_2" TransactionType="Upsert">
<Record>
<TesterRef TesterOID="bballardamad1"/>
<LocRef LocOID="LX4211204_0114"/>
<DateTimeStamp>2016-08-16T17:07:15</DateTimeStamp>
<ReasonForChange/>
<SID>1113182</SID>
</Record>
<xyz:Query QueryRepeatKey="552326" Status="Closed" Recipient="Site from CRA"/>
</IData>
</IGroupData>
</FmData>
</SubEventData>
</SubData>
</TestData>
<TestData EduOID="LX4211-204" MDataVersionOID="34" xyz:AuditSubCategoryName="Verify">
<SubData SubKey="5117f771-790f-4cde-b261-1a2db0dcd04b" xyz:SubKeyType="SubUUID" xyz:SubName="204-0114-002">
<SRef LocOID="LX4211204_0114"/>
<SubEventData EduEventOID="WK1_POST" EduEventRepeatKey="WK1_POST[1]" xyz:InstanceId="119171">
<FmData FmOID="VS2" FmRepeatKey="1" xyz:DataPageId="670872">
<IGroupData IGroupOID="VS2" xyz:RecordId="1934354">
<IData ItemOID="VS2.VSORRES12" TransactionType="Upsert" xyz:Verify="Yes">
<Record>
<TesterRef TesterOID="bballardamad1"/>
<LocRef LocOID="LX4211204_0114"/>
<DateTimeStamp>2016-08-16T17:09:10</DateTimeStamp>
<ReasonForChange/>
<SID>1114610</SID>
</Record>
</IData>
</IGroupData>
</FmData>
</SubEventData>
</SubData>
</TestData>
</CDM>
=== ================================================== ===========================
Мой XSLT:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<!--<xsl:template match="//SID[text()!=1113181]"/>-->
<xsl:template match="/CDM/TestData/SubData/SubEventData/FmData/IGroupData/IData/Record/SID[text()!=68943181]"/>
</xsl:stylesheet>
Ожидаемый результат:
#<CDM CDMVersion="1.3" FType="Transactional" FOID="85b40b86-e6f1-4813-a5f4-0b98c90bd72d" CreationDateTime="2016-08-19T19:04:25" xmlns="http://www.example.com/ns/CDM/v1.3" xmlns:xyz="http://www.example.com/ns/CDM/MData">
<TestData EduOID="LX4211-204" MDataVersionOID="34" xyz:AuditSubCategoryName="QueryClose">
<SubData SubKey="5117f771-790f-4cde-b261-1a2db0dcd04b" xyz:SubKeyType="SubUUID" xyz:SubName="204-0114-002">
<SRef LocOID="LX4211204_0114"/>
<SubEventData EduEventOID="EOT" EduEventRepeatKey="EOT[1]" xyz:InstanceId="76194">
<FmData FmOID="VS2" FmRepeatKey="1" xyz:DataPageId="388465">
<IGroupData IGroupOID="VS2" xyz:RecordId="1044557">
<IData ItemOID="VS2.VSORRES4_2" TransactionType="Upsert">
<Record>
<TesterRef TesterOID="bballardamad1"/>
<LocRef LocOID="LX4211204_0114"/>
<DateTimeStamp>2016-08-16T17:07:15</DateTimeStamp>
<ReasonForChange/>
<SID>1113182</SID>
</Record>
<xyz:Query QueryRepeatKey="552326" Status="Closed" Recipient="Site from CRA"/>
</IData>
</IGroupData>
</FmData>
</SubEventData>
</SubData>
</TestData>
<TestData EduOID="LX4211-204" MDataVersionOID="34" xyz:AuditSubCategoryName="Verify">
<SubData SubKey="5117f771-790f-4cde-b261-1a2db0dcd04b" xyz:SubKeyType="SubUUID" xyz:SubName="204-0114-002">
<SRef LocOID="LX4211204_0114"/>
<SubEventData EduEventOID="WK1_POST" EduEventRepeatKey="WK1_POST[1]" xyz:InstanceId="119171">
<FmData FmOID="VS2" FmRepeatKey="1" xyz:DataPageId="670872">
<IGroupData IGroupOID="VS2" xyz:RecordId="1934354">
<IData ItemOID="VS2.VSORRES12" TransactionType="Upsert" xyz:Verify="Yes">
<Record>
<TesterRef TesterOID="bballardamad1"/>
<LocRef LocOID="LX4211204_0114"/>
<DateTimeStamp>2016-08-16T17:09:10</DateTimeStamp>
<ReasonForChange/>
<SID>1114610</SID>
</Record>
</IData>
</IGroupData>
</FmData>
</SubEventData>
</SubData>
</TestData>
</CDM>
#
Большое спасибо за ваше время и быстрый ответ Майкла ... – Abe
Большое спасибо за ваше время и быстрый ответ Майкл ... я позаботились о точках1,3 и 4. К сожалению, у меня нет привилегии добавлять пространство имен во входной XML-файл, поскольку он генерируется другой системой. Я попробовал , но мог видеть ожидаемый результат. Не могли бы вы пролить свет на это? –
Abe
Вы не должны "* добавлять пространство имен во вход xml *". Не предлагает ли предлагаемый XSLT для вас? –