XSLT只选择一个对象

时间:2012-07-26 17:02:15

标签: xml xslt

我正在尝试从XML文档中选择一组业务位置。此代码有效,但只选择一个项目。所以,我的问题是:我可以对此代码做些什么来使其适用于每个位置?

    <xsl:template match="/InstitutionAlias/InstitutionAliasExternalReferenceCollection">
  <InstitutionExternalReferenceCollection>    
    <xsl:for-each select="InstitutionAliasExternalReference">
      <InstitutionExternalReference>
        <ExternalReferenceIdentifier>
          <xsl:value-of select="ExternalReferenceIdentifier"/>
        </ExternalReferenceIdentifier>
      </InstitutionExternalReference>
    </xsl:for-each>
  </InstitutionExternalReferenceCollection>
</xsl:template>

这是输出应该是什么样的

  <InstitutionExternalReferenceCollection>
- <InstitutionExternalReference>
  <ExternalReferenceIdentifier>Test1</ExternalReferenceIdentifier>
</InstitutionExternalReference>

- <InstitutionExternalReference>
  <ExternalReferenceIdentifier>Test2</ExternalReferenceIdentifier>
</InstitutionExternalReference>

这是一个示例xml文件。

  - <InstitutionAliasExternalReferenceCollection>
- <InstitutionAliasExternalReference>
  <ExternalReferenceIdentifier>Test1</ExternalReferenceIdentifier>
</InstitutionAliasExternalReference>
- <InstitutionAliasExternalReference>
  <ExternalReferenceIdentifier>Test2</ExternalReferenceIdentifier>
</InstitutionAliasExternalReference>

1 个答案:

答案 0 :(得分:1)

这样的东西?如果您确定每个企业只能有一个位置标识符(我不知道),那么可以压缩它,但我决定将事物分成不同的模板。

您可以在this XMLPlayground运行它(请参阅输出源)。

    <!-- kick things off -->
    <xsl:template match="BusinessCollection">
        <BusinessCollection>
            <xsl:apply-templates select='Business' />
        </BusinessCollection>
    </xsl:template>

    <!-- each business -->
    <xsl:template match='Business'>
        <Business>
            <xsl:apply-templates select='LocationIdentifier' />
        </Business>
    </xsl:template>

    <!-- each location identifier -->
    <xsl:template match='LocationIdentifier'>
        <LocationIdentifier>
            <xsl:value-of select='.' />
        </LocationIdentifier>
    </xsl:template>

</xsl:stylesheet>

您的预期输出提到了Data个节点,但这些节点没有出现在您的XSL尝试中,因此我不确定其目的是什么。