0

簡単なことですが、次の xml の XSL を作成しようとしています。

<?xml version="1.0" encoding="UTF-8"?>
<CurrentUsage xmlns="http://au.com.amnet.memberutils/"xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <OtherLimit>0</OtherLimit>
   <PeerLimit>0</PeerLimit>
   <PeriodEnd>2013-06-15T00:00:00</PeriodEnd>
   <PeriodStart>2013-05-15T00:00:00</PeriodStart>
   <PlanName>ADSL 2+ Enabled 120G/180G - $69.00</PlanName>
   <RateLimited>0</RateLimited>
   <otherInGB>9.51</otherInGB>
   <otherOutGB>2.06</otherOutGB>
   <peerInGB>0.12</peerInGB>
   <peerOutGB>0.02</peerOutGB>
</CurrentUsage>

私がそれから得たいのは、ただの内容です...

  • その他のGB
  • アウターアウトGB
  • ピアイン Gb
  • peerOutGb
  • これら 4 つの値の合計 (可能であれば XSL のみ)。

私はさまざまな XSL ドキュメントを試しました (私は専門家ではありません) が、実際には親ノードがないように見えるため、行き詰っています。それは正しい声明ですか?

<?xml version="1.0" encoding="iso-8859-1"?>
   <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:template match="/">
         <xsl:for-each select="CurrentUsage">
    <xsl:value-of select="otherInGB"/>
    <br></br>
    <xsl:value-of select="otherOutGB"/>
    <br></br>
    <xsl:value-of select="peerInGB"/>
    <br></br>
    <xsl:value-of select="peerOutGB"/>
    <br></br>
                  </xsl:for-each>
     </xsl:template>
   </xsl:stylesheet>

何も返さないため、これが間違っていることはわかっています。また、for-each 選択が実際に問題を引き起こしていることもわかっています。とにかく、どんな助けや指針も大歓迎です。

乾杯、

トレント

4

1 に答える 1

1

ここでの主な問題は、xml ファイルに名前空間があることです。したがって、xslt に名前空間 (プレフィックス付き) を追加する必要があります。次のようなことを試してください:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:mu="http://au.com.amnet.memberutils/"
                exclude-result-prefixes="mu">

    <xsl:output indent="yes"/>
    <xsl:strip-space elements="*"/>

    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()" />
        </xsl:copy>
    </xsl:template>

    <xsl:template match="mu:CurrentUsage">
        <xsl:value-of select="mu:otherInGB"/>
        <br></br>
        <xsl:value-of select="mu:otherOutGB"/>
        <br></br>
        <xsl:value-of select="mu:peerInGB"/>
        <br></br>
        <xsl:value-of select="mu:peerOutGB"/>
        <br></br>
    </xsl:template>

    <xsl:template match="/">
        <xsl:apply-templates select="mu:CurrentUsage " />
    </xsl:template>
</xsl:stylesheet>

次の出力が生成されます。

<?xml version="1.0"?>
9.51<br/>2.06<br/>0.12<br/>0.02<br/>
于 2013-05-23T11:56:13.133 に答える