XML ファイルから重複した要素を削除するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/117641

  •  02-07-2019
  •  | 
  •  

質問

次のようなXMLファイルがあります

<ns0:Employees xmlns:ns0="http://TestIndexMap.Employees">
  <Employee FirstName="FirstName_0" LastName="LastName_1" dept="dept_2" empNumber="1">
    <Schedules>
      <Schedule Date_join="2008-01-20" Date_end="2008-01-30" />
    </Schedules>
  </Employee>
  <Employee FirstName="FirstName_0" LastName="LastName_1" dept="dept_2" empNumber="2">
    <Schedules>
      <Schedule Date_join="2008-01-20" Date_end="2008-01-30" />
    </Schedules>
  </Employee>
  <Employee FirstName="FirstName_2" LastName="LastName_1" dept="dept_2" empNumber="2">
    <Schedules>
      <Schedule Date_join="2007-01-21" Date_end="2007-12-30" />

    </Schedules>
  </Employee>
  <Employee FirstName="FirstName_2" LastName="LastName_1" dept="dept_2" empNumber="2">
    <Schedules>
      <Schedule Date_join="2007-01-21" Date_end="2007-12-30" />
      <Schedule Date_join="2008-06-20" Date_end="2008-01-30" />

    </Schedules>
  </Employee>
</ns0:Employees>

名、姓、 date_join および data_end に基づいて重複を削除したいと考えています。

XSLT を使用してこれを実現する方法を誰かが説明してもらえますか?

役に立ちましたか?

解決

ここにいくつかのサンプルがあります 要素名とIDフィールドに基づいて重複を削除する方法. 。これを任意の分野に拡張することはそれほど難しいことではありません。

質問:拡大。私のXMLの一部は次のように見えます:

 <location>
   <state>xxxx</state>
 </location>

 <location>
    <state>yyyy</state>
 </location>

  <location>
    <state>xxxx</state>
 </location>

望ましい出力は次のとおりです。

xxxx
yyyy

つまり、状態の重複した値を出力すべきではありません。これはできるでしょうか?

   <xsl:variable name="unique-list"
     select="//state[not(.=following::state)]" />   

   <xsl:for-each select="$unique-list">
 <xsl:value-of select="." />
   </xsl:for-each>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top