對於我的輸入XML,我編寫了XSLT,但是我無法使XSLT正確生成<mynewtag>
。請幫忙。XSLT將遞增值附加到現有屬性值
XML輸入:
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book.child.1>
<title>charithram</title>
<author>sarika</author>
</book.child.1>
<book.child.2>
<title>doublebell</title>
<author>psudarsanan</author>
</book.child.2>
</books>
預期輸出:
<?xml version="1.0" encoding="UTF-8"?>
<newbooks>
<newbook>
<mynewtag id="book1" />
<title>charithram</title>
<author>sarika</author>
</newbook>
<newbook>
<mynewtag id="book2" />
<title>doublebell</title>
<author>psudarsanan</author>
</newbook>
</newbooks>
XSLT,我試圖:[I理解語法不正確對<mynewtag>
。但我不知道要解決它以獲得所需的輸出。
<?xml version="1.0" encoding="ISO-8859-1"?>
<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:template match="/">
<newbooks>
<xsl:for-each select="books/child::*">
<newbook>
<mynewtag id="book<xsl:number value='position()' format='1' />" />
<title>
<xsl:value-of select="title" />
</title>
<author>
<xsl:value-of select="author" />
</author>
</newbook>
</xsl:for-each>
</newbooks>
</xsl:template>
</xsl:stylesheet>
在網上XSLT轉換嘗試,http://www.freeformatter.com/xsl-transformer.html
我試圖分配位置給一個變量,但我仍然面對不知道如何與屬性值book
其追加的同樣的問題。
<xsl:variable name="cnt">
<xsl:number value='position()' format='1' />
</xsl:variable>
<xsl:value-of select = "$cnt" />
注:如果我刪除從XSL的<xsl:number value='position()' format='1' />
,那麼語法是正確的,但後來我將無法產生book1
book2
等爲<mynewtag>
屬性值。
請幫忙。
加入:<mynewtag>
是必需元素。它就像輸出中所需的任何其他XML元素,如<title>
。這不是僅僅保留屬性id
的元素。對不起,如果有這個混淆。
,然後將溶液在這裏,從所獲得的答案來概括:
<mynewtag>
<xsl:attribute name="id">
<xsl:text>book</xsl:text>
<xsl:number value='position()'/>
</xsl:attribute>
</mynewtag>
或短:
<mynewtag id="book{position()}" />"
或
<newbook>
<xsl:variable name="cnt">
<xsl:number value='position()' format='1' />
</xsl:variable>
<mynewtag id="book{$cnt}" />
..........
也是IanRoberts提到的屬性值模板。
閱讀[屬性值模板](http://www.w3。org/TR/xslt#attribute-value-templates) –
謝謝@IanRoberts提供有關屬性值模板的參考。雖然michael.hor257k已經完全回答了我的查詢,但這個額外的參考幫助我更深入地研究了它。 所以我也可以用不同的方式來達到結果。謝謝! –
spiderman