簡體   English   中英

使用XSLT轉換XML節點值

[英]Transform an XML node value using XSLT

問題的一般說明

我有幾種來自不同來源的XML,我正在使用XSLT將它們轉換為C#應用程序可以統一解析的一種標准格式。 我已經進行了概念驗證轉換,並且可以將XHTML(幾乎)完全轉換為標准XML。 這個問題是關於“幾乎”的。

C#應用程序期望輸入xml(轉換的輸出)不僅遵循xml元素的結構,而且符合節點內部數據的格式,例如, <date>元素必須符合某種格式。格式為"yyyy/MM/dd" ,但是一個輸入xml(用於轉換)可以采用dd / MM格式,而另一種則可以。

請注意,我控制了C#應用程序並設計了標准XML模板,因此更改這些都不是問題,我也知道要轉換的不同傳入XML的確切格式,並且我正在為每種類型開發一個轉換我收到的XML格式,因為它們彼此之間可能有很大不同,並且我不希望通過更改轉換以適應某種格式的更改來破壞我以前使用的另一種格式。

有關我的問題的具體問題

因此,切入正題,如何使用XLST轉換節點的值? 我如何才能告訴轉換從(特別是) dd/MM格式獲取此節點值,並將其轉換為yyyy/MM/dd

PS我已經考慮過創建一個額外的XML用於配置,以便可以在C#中針對每種格式對這種類型的轉換進行轉換,但是我希望這是最后的資源。 我希望XSLT的輸出為100%標准。 我還發現了一些其他的SO問題,描述了轉換值的過程,但是所有這些問題都涉及條件替換,看看值是否等於x並輸出y ,因為日期可以是任何東西,所以不會這樣做。

如何告訴轉換從(特別是)dd / MM格式獲取此節點值,並將其轉換為yyyy / MM / dd?

將日期從dd/mm/yyyyyyyy/mm/dd是一個相對簡單的字符串操作:

<xsl:value-of select="concat(substring($node, 7, 4), '/', substring($node, 4, 2), '/', substring($node, 1, 2))"/>

除非您添加有關要添加年份的規則,否則無法將日期從dd/mmyyyy/mm/dd

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM