2013-11-04 62 views
3

以下是我的要求。我們可以使用XSLT來做到這一點嗎?我想將AttributeName的值作爲標記在策略下,並將相應的AttributeValue作爲值進行轉換。將字符串值轉換爲XML標記名稱

輸入:

<Policy> 
    <Attributes> 
     <AttributeName>is_policy_loan</AttributeName> 
     <AttributeValue>Yes</AttributeValue> 
    </Attributes> 
    <Attributes> 
     <AttributeName>is_policy_owners</AttributeName> 
     <AttributeValue>Yes</AttributeValue> 
    </Attributes>  
    <Attributes> 
     <AttributeName>is_policy_twoyears</AttributeName> 
     <AttributeValue>Yes</AttributeValue> 
    </Attributes>  
</Policy> 

輸出:

<Policy> 
    <is_policy_loan>Yes</is_policy_loan> 
    <is_policy_owners>Yes</is_policy_owners> 
    <is_policy_twoyears>Yes</is_policy_twoyears> 
</Policy> 
+0

不要忘了接受的答案。 – Hash

回答

1

以下xsl文件將做的工作:

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <!-- create the <AttributeName>AttributeValue</..> nodes --> 
    <xsl:template match="//Attributes"> 
    <xsl:variable name="name" select="AttributeName" /> 
    <xsl:element name="{$name}"> 
     <xsl:value-of select="AttributeValue" /> 
    </xsl:element> 
    </xsl:template> 

    <!-- wrap nodes in a `Policy` node --> 
    <xsl:template match="/"> 
    <Policy> 
     <xsl:apply-templates/> 
    </Policy> 
    </xsl:template> 
</xsl:stylesheet> 
+0

謝謝hek2mgl !!我會試試這個,讓你知道結果。 – user2954062

1

的路上我會做,

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> 
    <xsl:output method="xml" indent="yes" encoding="UTF-8" omit-xml-declaration="yes" /> 
    <xsl:template match="Policy"> 
     <xsl:element name="Policy"> 
     <xsl:apply-templates /> 
     </xsl:element> 
    </xsl:template> 
    <xsl:template match="Attributes"> 
     <xsl:variable name="name" select="AttributeName" /> 
     <xsl:element name="{$name}"> 
     <xsl:value-of select="AttributeValue" /> 
     </xsl:element> 
    </xsl:template> 
</xsl:stylesheet> 

輸出將是,

<Policy> 
    <is_policy_loan>Yes</is_policy_loan> 
    <is_policy_owners>Yes</is_policy_owners>  
    <is_policy_twoyears>Yes</is_policy_twoyears>  
</Policy>