2015-09-06 62 views
-2

我有一個要求,我會得到URL在這樣的格式如下 https://sample.com?first=one&second=two&third=three如何解析在XSLT查詢參數

我怎樣才能形成以下將通過使用此查詢參數形成XML結構

<first>one</first><second>two</second><third>three</third> 

可以請別人幫我thisand給我提供的XSLT這一要求

+1

你可能得到了一個downvote,因爲你沒有顯示任何努力去做這個你自己。你來這裏需要的是一個需求而不是一個問題 - 我們在這裏解決你的代碼問題,而不是爲你做你的工作。看看「[*我怎麼問一個好問題?*](http://stackoverflow.com/help/how-to-ask)」的一些建議。 –

+1

「*我會得到URL *」是什麼意思?您如何「獲取」並將其傳遞給XSLT樣式表? –

+0

http://stackoverflow.com/help/someone-answers –

回答

0

鑑於以下XML輸入(注意轉義符號字符的):

<URL>https://sample.com?first=one&amp;second=two&amp;third=three</URL> 

如下因素的樣式表:

XSLT 1.0

<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="/"> 
    <output> 
     <xsl:call-template name="tokenize"> 
      <xsl:with-param name="text" select="substring-after(URL, '?')"/> 
     </xsl:call-template> 
    </output> 
</xsl:template> 

<xsl:template name="tokenize"> 
    <xsl:param name="text"/> 
    <xsl:param name="delimiter" select="'&amp;'"/> 
     <xsl:variable name="token" select="substring-before(concat($text, $delimiter), $delimiter)" /> 
     <xsl:if test="$token"> 
      <xsl:element name="{substring-before($token, '=')}"> 
       <xsl:value-of select="substring-after($token, '=')"/> 
      </xsl:element> 
     </xsl:if> 
     <xsl:if test="contains($text, $delimiter)"> 
      <!-- recursive call --> 
      <xsl:call-template name="tokenize"> 
       <xsl:with-param name="text" select="substring-after($text, $delimiter)"/> 
      </xsl:call-template> 
     </xsl:if> 
</xsl:template> 

</xsl:stylesheet> 

將返回:

<?xml version="1.0" encoding="UTF-8"?> 
<output> 
    <first>one</first> 
    <second>two</second> 
    <third>three</third> 
</output> 

請注意,這隻有在工作查詢字段名稱也是有效的XML元素名稱。