3

下面是我的要求。我们可以使用 XSLT 做到这一点吗?我想将 AttributeName 的值转换为策略下的标签,并将相应的 AttributeValue 转换为值。

输入 :

<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>
4

2 回答 2

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>
于 2013-11-05T03:18:54.783 回答
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>
于 2013-11-04T21:12:10.850 回答