我知道這是一個簡單的問題。我仍然在學習和熟悉XSLT編碼。我在我的XSLT中遇到問題,我不知道我是否正確執行了這個操作。我需要從輸入文件中獲取值並將其存儲在新元素標記名稱中,並且我不需要填充名稱空間和屬性父元素上的內容。我做了一個關於這方面的研究,我看到了很多參考文獻,但我無法應用它。如果根元素沒有任何名稱空間和屬性,我所做的XSLT(v02)工作正常(僅從參考中複製)。但是,當我放置一個名稱空間和屬性時,沒有輸出填充。無法讀取xslt中的命名空間和屬性
輸入文件
<Root xmlns="http://abcd.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" releaseID="9.2" versionID="2.12.3" xsi:schemaLocation="abcd.com abcd.xsd">
<Element>
<Field>AAAAA</Field>
</Element>
<Element>
<Field>BBBBB</Field>
</Element>
<Element>
<Field>CCCCC</Field>
</Element>
XSLT文件
<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="/">
<NewRecord>
<xsl:for-each select="Root/Element">
<NewTransaction>
<Position>
<xsl:value-of select="position()"/>
</Position>
<TransactionID>
<xsl:value-of select="Field"/>
</TransactionID>
</NewTransaction>
</xsl:for-each>
</NewRecord>
</xsl:template>
輸出產生
<NewRecord/>
我預期的輸出應該是這樣的:
<NewRecord>
<NewTransaction>
<Position>1</Position>
<TransactionID>AAAAA</TransactionID>
</NewTransaction>
<NewTransaction>
<Position>2</Position>
<TransactionID>BBBBB</TransactionID>
</NewTransaction>
<NewTransaction>
<Position>3</Position>
<TransactionID>CCCCC</TransactionID>
</NewTransaction>
我認爲這個問題是在<xsl:template match="/">
,我還是我需要在節點上迷茫放。感謝您的幫助。
[XSLT與默認命名空間設置爲xmlns的XML源]的可能重複(http://stackoverflow.com/questions/1344158/xslt-with-xml-source-that-has-a-default-namespace -set-to-xmlns) – teppic
當你的問題被標記爲'xslt-2.0'時,爲什麼你的樣式表聲明'version =「1.0」'? –
@ michael。 hor257k,我忘了更改版本,但我真的使用v02。謝謝。 –