入力xml内のノードのサブセットを持つ入力xmlを別のものに変換するには、XSLTファイルが必要です。入力は10個のノードを持っている場合は元のために、私は約5ノード 入力と出力を作成する必要がxsltを使用してxml入力のサブセットをコピーする
<Department diffgr:id="Department1" msdata:rowOrder="0">
<Department>10</Department>
<DepartmentDescription>BABY PRODUCTS</DepartmentDescription>
<DepartmentSeq>7</DepartmentSeq>
<InsertDateTime>2011-09-29T13:19:28.817-05:00</InsertDateTime>
</Department>
出力:私たちは XSLTを必要といけないノードを抑制するための一つの方法を発見した
<Department diffgr:id="Department1" msdata:rowOrder="0">
<Department>10</Department>
<DepartmentDescription>BABY PRODUCTS</DepartmentDescription>
</Department>
:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Department/DepartmentSeq"/>
<xsl:template match="Department/InsertDateTime"/>
</xsl:stylesheet>
私は私のXSLT wを変更する必要がありますので、私は、私は「すべてをコピーして、私が必要といけないものを除外する」私は必要なノードを選択していないのに役立ちますXSLTを必要としますhenever入力スキーマは、より多くのノードを追加します。
更新:
送信したスニペットは.NET Diffgramからのものでした。ボロディンが提供するXSLT、で
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<NewDataSet>
<MessageHeader>
<MessageID>201112270242029525719b93a-5fc5-42ce-8424-10764a4497ca</MessageID>
<RequestType>Publish</RequestType>
<ListOfApplications />
<MessageType>MCH</MessageType>
</MessageHeader>
<Department diffgr:id="Department1" msdata:rowOrder="0">
<Department>10</Department>
<DepartmentDescription>BABY PRODUCTS</DepartmentDescription>
<DepartmentSeq>7</DepartmentSeq>
<InsertDateTime>2011-09-29T13:19:28.817-05:00</InsertDateTime>
<UpdateDateTime>2011-09-30T11:50:59-05:00</UpdateDateTime>
<InsertDateTimeUTC>2011-09-29T18:19:28.817-05:00</InsertDateTimeUTC>
</Department>
<Subclass diffgr:id="Subclass1" msdata:rowOrder="0" diffgr:hasChanges="modified">
<Department>10</Department>
<Category>03</Category>
<Class>010</Class>
<Subclass>03</Subclass>
<SubclassLongDescription>BABY ACCESSORIES-OTHER LD TX 1120</SubclassLongDescription>
<SubclassShortDescription>BABY ACCESSORIES-OTH</SubclassShortDescription>
</Subclass>
</NewDataSet>
<diffgr:before>
<Subclass diffgr:id="Subclass1" msdata:rowOrder="0">
<Department>10</Department>
<Category>03</Category>
<Class>010</Class>
<Subclass>03</Subclass>
<SubclassLongDescription>BABY ACCESSORIES-OTHER LD TX 1120</SubclassLongDescription>
<SubclassShortDescription>BABY ACCESSORIES-OTH</SubclassShortDescription>
</Subclass>
</diffgr:before>
</diffgr:diffgram>
HERESに私は、私はそれらの部門とDepartmentDescriptionタグが、何もしたくない
<diffgr:diffgram xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<NewDataSet>
<MessageHeader>
<MessageID>201112270242029525719b93a-5fc5-42ce-8424-10764a4497ca</MessageID>
<RequestType>Publish</RequestType>
<ListOfApplications />
<MessageType>MCH</MessageType>
</MessageHeader>
<Department diffgr:id="Department1" msdata:rowOrder="0">
<Department>10</Department>
<DepartmentDescription>BABY PRODUCTS</DepartmentDescription>
</Department>
<Subclass diffgr:id="Subclass1" msdata:rowOrder="0" diffgr:hasChanges="modified">
<Department>10</Department>
<Category>03</Category>
<Class>010</Class>
<Subclass>03</Subclass>
<SubclassLongDescription>BABY ACCESSORIES-OTHER LD TX 1120</SubclassLongDescription>
<SubclassShortDescription>BABY ACCESSORIES-OTH</SubclassShortDescription>
</Subclass>
</NewDataSet>
<diffgr:before>
<Subclass diffgr:id="Subclass1" msdata:rowOrder="0">
<Department>10</Department>
<Category>03</Category>
<Class>010</Class>
<Subclass>03</Subclass>
<SubclassLongDescription>BABY ACCESSORIES-OTHER LD TX 1120</SubclassLongDescription>
<SubclassShortDescription>BABY ACCESSORIES-OTH</SubclassShortDescription>
</Subclass>
</diffgr:before>
</diffgr:diffgram>
を得るもの:
入力を次のように完全なXMLです。 MessageHeader /サブクラスがxsltで指定されていないときにコピーされる他のノードはなぜですか?
誰でも私より上の方が良い解決策を与えることができます。このようにすべてのノードを追加するのは面倒ですが、他には何もできない場合は機能します。
返事のおかげで、私は部門(兄弟)の同じレベルの複数のノードがある場合、私は部門 2の属性を失う 1.このXSLTと2つの問題を持って、彼らはまだコピーされます。私はちょうど私が欲しいものをコピーする単純なxsltを持つことはできません...? – mdfaraz
@mdfaraz私は属性に対処するために私の答えを修正しました。私は ''の兄弟について何を意味するのか分かりません。その名前で* inner *要素を意味するなら、それは私のためにうまくいき、 'Department/Department'と' Department/Department'だけを含んでいます。最初のレベルのDepartment要素を意味する場合、あなたのデータもあなたの質問も、どんな兄弟も言及していませんでした。説明してください。 –
Borodin
@mdfaraz:** edit **上記の私のコメントでは、私は 'Department/Department'と' Department/DepartmentDescription'を意味しました – Borodin