我從無法操作的在線服務獲取XML輸出。 TableHeader
節點包含列名稱。使用XSLT 1.0,如何使用TableHeader
中的元素重命名通用Attribute
元素?如何使用頭節點的元素重命名通用XML元素
XML輸入:
<?xml version="1.0" encoding="UTF-8"?>
<SearchResults>
<TableHeader>
<ColumnName>Surname</ColumnName>
<ColumnName>FirstNames</ColumnName>
<ColumnName>Gender</ColumnName>
<ColumnName>Age</ColumnName>
</TableHeader>
<Object>
<Attribute>Linder</Attribute>
<Attribute>Sophie</Attribute>
<Attribute>Female</Attribute>
<Attribute/>
</Object>
<Object>
<Attribute>?</Attribute>
<Attribute>Thomas</Attribute>
<Attribute>Male</Attribute>
<Attribute>26</Attribute>
</Object>
<Object>
<Attribute>Akona</Attribute>
<Attribute>Lettie</Attribute>
<Attribute>Female</Attribute>
<Attribute>35</Attribute>
</Object>
<Object>
<Attribute>Linder</Attribute>
<Attribute>Fred</Attribute>
<Attribute>Male</Attribute>
<Attribute>38</Attribute>
</Object>
<Object>
<Attribute>Akona</Attribute>
<Attribute>Alicia</Attribute>
<Attribute>Female</Attribute>
<Attribute/>
</Object>
</SearchResults>
所需的輸出:
<?xml version="1.0" encoding="UTF-8"?>
<SearchResults>
<Object>
<Surname>Linder</Surname>
<FirstNames>Sophie</FirstNames>
<Gender>Female</Gender>
<Age/>
</Object>
<Object>
<Surname>?</Surname>
<FirstNames>Thomas</FirstNames>
<Gender>Male</Gender>
<Age>26</Age>
</Object>
<Object>
<Surname>Akona</Surname>
<FirstNames>Lettie</FirstNames>
<Gender>Female</Gender>
<Age>35</Age>
</Object>
<Object>
<Surname>Linder</Surname>
<FirstNames>Fred</FirstNames>
<Gender>Male</Gender>
<Age>38</Age>
</Object>
<Object>
<Surname>Akona</Surname>
<FirstNames>Alicia</FirstNames>
<Gender>Female</Gender>
<Age/>
</Object>
</SearchResults>
我是很新的XSLT,所以我還沒有走多遠,但這裏是我當前的嘗試。我想我可以使用xsl:variable
來設置列名,然後將它們用作元素標籤,但我相信肯定有更好的方法。另外,它理想地適用於可變數量的列。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent ="yes"/>
<xsl:variable name ="column1" select ="(ColumnName)[1]" />
<xsl:template match ="Object">
<Object>
<Surname>
<xsl:value-of select="(Attribute)[1]"/>
</Surname>
<FirstName>
<xsl:value-of select="(Attribute)[2]"/>
</FirstName>
<Gender>
<xsl:value-of select="(Attribute)[3]"/>
</Gender>
<Age>
<xsl:value-of select="(Attribute)[4]"/>
</Age>
</Object>
</xsl:template>
</xsl:stylesheet>
我的最終目標是這些使用Muenchian方法能集團,但我的理解是,有更多的描述性的元素名稱會提出這樣方便很多。如果可以在不重新命名的情況下一步完成,請在評論中告訴我,我將爲此發佈一個單獨的問題。
「*我的最終目標是要能集團這些使用Muenchian方法,但我的理解是,具有更多描述性元素名稱會使這更容易。「我完全不相信它會。你想將他們分組? –
@ michael.hor257k我會把他們歸於姓氏。 – rudivonstaden
它可以通過任何方式完成。編碼時可能會更簡單一些,但是爲了達到這個目的,您必須做兩次傳球,所以... –