這種格式我有一個XML結構:如何提取XSLT
<Date>Mon, 11 Aug 2009 13:15:10 GMT</Date>
我想只提取15:10或「15」和「10」。 使用xslt做什麼最好的方法是什麼
這種格式我有一個XML結構:如何提取XSLT
<Date>Mon, 11 Aug 2009 13:15:10 GMT</Date>
我想只提取15:10或「15」和「10」。 使用xslt做什麼最好的方法是什麼
如果日期包含一個冒號僅在時間字段和時間總是在格式HH表示:MM:SS然後選擇第一個冒號後的固定長度字符串應該解決您的問題
未測試的XSLT單行
<xsl:variable name="time" select="substring(substring-after(Date, ':'), 1, 5)"/>
是的,這將工作。 +1 – 2010-08-18 12:47:35
這裏是一個一般XSLT溶液,其將是有用的,可以在將含在該問題中指定的格式的日期的字符串,進一個XML結構化的日期:
這使用FXSL 1.x模板str-split-to-words
用多個可能的分隔符執行標記。
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ext="http://exslt.org/common">
<xsl:import href="strSplit-to-Words.xsl"/>
<xsl:output indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="/">
<xsl:variable name="vwordNodes">
<xsl:call-template name="str-split-to-words">
<xsl:with-param name="pStr" select="/"/>
<xsl:with-param name="pDelimiters" select="' ,'"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="vTokens" select="ext:node-set($vwordNodes)/*"/>
<xsl:variable name="vrtfDateTimeStruct">
<date>
<week-day-name val="{$vTokens[1]}"/>
<day val="{$vTokens[2]}"/>
<month-name val="{$vTokens[3]}"/>
<year val="{$vTokens[4]}"/>
<time val="{$vTokens[5]}"/>
<zone val="{$vTokens[6]}"/>
</date>
</xsl:variable>
<xsl:value-of select=
"substring(ext:node-set($vrtfDateTimeStruct)/*/time/@val,1,5)"/>
</xsl:template>
</xsl:stylesheet>
當這種變換所提供的XML文檔應用:
<Date>Mon, 11 Aug 2009 13:15:10 GMT</Date>
想要的結果產生:
13:15
請注意:字符串是完全轉換爲XML結構化的日期usi ng代碼片段:
<xsl:variable name="vrtfDateTimeStruct">
<date>
<week-day-name val="{$vTokens[1]}"/>
<day val="{$vTokens[2]}"/>
<month-name val="{$vTokens[3]}"/>
<year val="{$vTokens[4]}"/>
<time val="{$vTokens[5]}"/>
<zone val="{$vTokens[6]}"/>
</date>
</xsl:variable>
你可以解釋一下,它是如何工作的 – Wondering 2010-08-18 13:36:04
@Wondering,@Ajjandro:我完全用XSLT替代瞭解決方案,它完全重構了DateTime結構。 – 2010-08-18 16:24:59
+1美麗的答案。我認爲RTF應該具有比屬性值更好的文本節點值,所以'string($ vrtfDateTimeStruct)'可以重建標記字符串...... – 2010-08-18 16:49:16
好問題(+1)。看到我的答案是另一種通用的解決方案,可以與週日和月份的任意長度的名稱一起使用。 :) – 2010-08-18 12:55:40