テンプレート内の配列内のアイテムをフィルタリングするにはどうすればよいですか?

ニック

こんにちは私はXSLとフィルタリングアレイに問題があります。

これは私のXSL変換です:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:ns0="http://xmlns.sse.com/SSEPD/GIS/PublishChangeSetEBM" xmlns:tns="http://xmlns.sse.com/SSEPD/GIS/UpdateLocationEBM" xmlns:oraxsl="http://www.oracle.com/XSL/Transform/java" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:ns1="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:ns3="http://iec.ch/2002/schema/CIM_difference_model#" xmlns:ns4="http://xmlns.sse.com/SSEPD/GIS/ChangeSetEBO" xmlns:ns5="http://iec.ch/TC57/2010/CIM-schema-cim15#" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:ns2="http://xmlns.sse.com/Enterprise/Common" xmlns:client="http://xmlns.oracle.com/GIS_R1_SOA/SubstationEBS/SubstationEBS" xmlns:ns7="http://www.ibm.com/maximo" xmlns:ns6="http://xmlns.oracle.com/GIS_R1_SOA/UpdateLocationProviderABCS/UpdateLocationProviderABCS" xmlns:ns8="http://xmlns.sse.com/SSEPD/GIS/UpdateLocationEBO">
<xsl:variable name="ID_HASH">#</xsl:variable>
<xsl:template match="/">
    <tns:UpdateLocationEBM>
        <tns:DataArea>
            <ns7:SyncSSENLOCATIONS>
                <ns7:SSENLOCATIONSSet>
                    <xsl:apply-templates select="/ns0:PublishChangeSetRequestEBM/ns0:DataArea/ns4:ChangeSet/ns1:RDF/ns3:DifferenceModel/ns3:forwardDifferences/ns5:Substation"/>
                </ns7:SSENLOCATIONSSet>
            </ns7:SyncSSENLOCATIONS>
        </tns:DataArea>
    </tns:UpdateLocationEBM>
</xsl:template>
<xsl:template match="/ns0:PublishChangeSetRequestEBM/ns0:DataArea/ns4:ChangeSet/ns1:RDF/ns3:DifferenceModel/ns3:forwardDifferences/ns5:Substation">
    <ns7:LOCATIONS>
        <xsl:variable name="CURRENT_SUB" select="."/>
        <ns7:CURRENT_SUB>
            <xsl:value-of select="$CURRENT_SUB"/>
        </ns7:CURRENT_SUB>
        <xsl:variable name="LOCATION" select="/ns0:PublishChangeSetRequestEBM/ns0:DataArea/ns4:ChangeSet/ns1:RDF/ns3:DifferenceModel/ns3:forwardDifferences/ns5:Location[@ns1:ID = substring-after($CURRENT_SUB/ns5:PowerSystemResource.Location/@ns1:resource, $ID_HASH)]"/>
        <xsl:variable name="VOLTAGE_LEVEL" select="/ns0:PublishChangeSetRequestEBM/ns0:DataArea/ns4:ChangeSet/ns1:RDF/ns3:DifferenceModel/ns3:forwardDifferences/ns5:VoltageLevel[ns5:VoltageLevel.Substation/@ns1:resource = concat($ID_HASH,$CURRENT_SUB/@ns1:ID)]"/>
        <ns7:VOLTAGE_LEVEL>
            <xsl:value-of select="$VOLTAGE_LEVEL"/>
        </ns7:VOLTAGE_LEVEL>
        <ns7:LOCATION>
            <xsl:value-of select="$LOCATION/ns5:Location.ngr"/>
        </ns7:LOCATION>
    </ns7:LOCATIONS>
</xsl:template>
</xsl:stylesheet>

これはXML入力です。

<PublishChangeSetRequestEBM xmlns:cim="http://iec.ch/TC57/2010/CIM-schema-cim15#" xmlns:ns5="http://iec.ch/TC57/2010/CIM-schema-cim15#" xmlns:dm="http://iec.ch/2002/schema/CIM_difference_model#" xmlns:ns3="http://iec.ch/2002/schema/CIM_difference_model#" xmlns:ebo="http://xmlns.sse.com/SSEPD/GIS/ChangeSetEBO" xmlns:tns="http://xmlns.sse.com/SSEPD/GIS/PublishChangeSetEBM" xmlns="http://xmlns.sse.com/SSEPD/GIS/PublishChangeSetEBM" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:ns1="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:ns4="http://xmlns.sse.com/SSEPD/GIS/ChangeSetEBO" xmlns:ns0="http://xmlns.sse.com/SSEPD/GIS/PublishChangeSetEBM">
<tns:DataArea>
    <ebo:ChangeSet>
        <ebo:JobID>100035</ebo:JobID>
        <ebo:FileName>Substation_XREF.rdf</ebo:FileName>
        <rdf:RDF>
            <dm:DifferenceModel rdf:about="">
                <dm:forwardDifferences rdf:parseType="Statements">
                    <cim:Substation rdf:ID="IL_SUB001">
                        <cim:PowerSystemResource.Location rdf:resource="#SUB_loc001"/>
                    </cim:Substation>
                    <cim:VoltageLevel rdf:ID="VOL_001">
                        <cim:VoltageLevel.Substation rdf:resource="#IL_SUB001"/>
                    </cim:VoltageLevel>
                    <cim:Location rdf:ID="SUB_loc001">
                        <cim:Location.ngr>SU33736744</cim:Location.ngr>
                    </cim:Location>
                </dm:forwardDifferences>
            </dm:DifferenceModel>
        </rdf:RDF>
    </ebo:ChangeSet>
</tns:DataArea>
</PublishChangeSetRequestEBM>

私が抱えている問題は、変数$ VOLTAGE_LEVELにあります。何らかの理由で、テンプレート関数内で変数を定義しているときに適用しているフィルタリング条件が機能していません。それを使用しているタグns7:VOLTAGE_LEVELは出力で空です。

さまざまなツールで再確認し、さまざまなテストを実行しましたが、問題は$ CURRENT_SUB変数にあるようです。しかし、タグns7:LOCATIONが正しい情報を表示しており、$ VOLTAGE_LEVELと同じアプローチを使用して入力された変数$ LOCATIONを使用しているため、これは奇妙です。

ご覧いただけますか?私は無知です。

注:私はスタイルシートバージョン2.0を使用しています

ニックよろしくお願いします

ベビー

この変更されたテンプレートと述語値を次のように試すことができます。

<xsl:template match="/">
    <tns:UpdateLocationEBM>
        <tns:DataArea>
            <ns7:SyncSSENLOCATIONS>
                <ns7:SSENLOCATIONSSet>
                    <xsl:apply-templates
                        select="/ns0:PublishChangeSetRequestEBM/ns0:DataArea/ns4:ChangeSet/ns1:RDF/ns3:DifferenceModel/ns3:forwardDifferences/ns5:Substation" />
                </ns7:SSENLOCATIONSSet>
            </ns7:SyncSSENLOCATIONS>
        </tns:DataArea>
    </tns:UpdateLocationEBM>
</xsl:template>
<xsl:template
    match="/ns0:PublishChangeSetRequestEBM/ns0:DataArea/ns4:ChangeSet/ns1:RDF/ns3:DifferenceModel/ns3:forwardDifferences/ns5:Substation">
    <ns7:LOCATIONS>
        <xsl:variable name="CURRENT_SUB" select="."/>

        <ns7:CURRENT_SUB>
            <xsl:value-of select="$CURRENT_SUB" />
        </ns7:CURRENT_SUB>

        <xsl:variable name="LOCATION"
            select="/ns0:PublishChangeSetRequestEBM/ns0:DataArea/ns4:ChangeSet/ns1:RDF/ns3:DifferenceModel/ns3:forwardDifferences/ns5:Location[@ns1:ID = substring-after($CURRENT_SUB/ns5:PowerSystemResource.Location/@ns1:resource, $ID_HASH)]" />
        <xsl:variable name="VOLTAGE_LEVEL"
            select="/ns0:PublishChangeSetRequestEBM/ns0:DataArea/ns4:ChangeSet/ns1:RDF/ns3:DifferenceModel/ns3:forwardDifferences/ns5:VoltageLevel/ns5:VoltageLevel.Substation[@ns1:resource = concat($ID_HASH,$CURRENT_SUB/@ns1:ID)]" />

        <ns7:VOLTAGE_LEVEL>
            <xsl:value-of select="$VOLTAGE_LEVEL" />
        </ns7:VOLTAGE_LEVEL>
        <ns7:LOCATION>
            <xsl:value-of select="$LOCATION/ns5:Location.ngr" />
        </ns7:LOCATION>
    </ns7:LOCATIONS>
</xsl:template>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

同じプロパティ内のオブジェクトの配列をフィルタリングするにはどうすればよいですか?

分類Dev

フィルタリングされたリスト内のアイテムの数を取得するにはどうすればよいですか?

分類Dev

ReactJSとReduxでリスト内のアイテムをフィルタリングするにはどうすればよいですか?

分類Dev

tornadofxアプリ内のobservableArrayListにバインドされたアイテムのフィルタリングを可能にするためにビューをリファクタリングするにはどうすればよいですか?

分類Dev

別の配列にあるアイテムに基づいて配列をフィルタリングするにはどうすればよいですか?

分類Dev

Reactの画面に表示されている配列のアイテムをフィルタリングするにはどうすればよいですか?

分類Dev

グループ内のアイテムをパンダのリターンブール値と比較するにはどうすればよいですか?

分類Dev

タプルのアイテムでタプルのリストをフィルタリングするにはどうすればよいですか?

分類Dev

ある配列のすべてのアイテムが別の配列のアイテムの一部と一致する配列の配列から配列をフィルタリングするにはどうすればよいですか?

分類Dev

リスト/単一アイテムテンプレートのEmberルーティングを構成するにはどうすればよいですか?

分類Dev

数値の配列からngRepeatのアイテムをフィルタリングするにはどうすればよいですか?

分類Dev

angleJSの配列から特定のアイテムをフィルタリングするにはどうすればよいですか?

分類Dev

リスト内のアイテムがフィールドのどこかに表示されるかどうかに基づいて、データフレームから列を削除するにはどうすればよいですか?

分類Dev

forループを使用してリスト内のすべてのアイテムのボタンを作成するにはどうすればよいですか?

分類Dev

Rのデータフレーム内のリストの値をフィルタリングするにはどうすればよいですか?

分類Dev

Knockoutjsテンプレート:いくつかのプロパティで配列をフィルタリングした後、2つのDOM要素に1つのオブジェクト配列を使用するにはどうすればよいですか?

分類Dev

レルムReactNativeのリストに含まれるアイテムでフィルタリングするにはどうすればよいですか?

分類Dev

Rシャイニー内のリーフレットマップからの入力に基づいてデータテーブルをフィルタリングするにはどうすればよいですか?

分類Dev

オブジェクトの配列内のプロパティの最初の文字に基づいてオブジェクトの配列をフィルタリングするにはどうすればよいですか?

分類Dev

次のステップに進まずに出力をレンダリングするDjangoのマルチステップフォームウィザード内に選択ボタンを作成するにはどうすればよいですか?

分類Dev

パンダのリストに基づいてDataFrameのアイテムをフィルタリングするにはどうすればよいですか?

分類Dev

配列インデックスが動的に決定される配列内の特定のアイテムに対して双方向のデータバインディングを行うにはどうすればよいですか?

分類Dev

ラムダを使用して、第2レベルのリスト内のオブジェクトのプロパティでリストをフィルタリングするにはどうすればよいですか?

分類Dev

カスタムUserControlがDataTrigger内のテンプレートセッター内にあるときに双方向バインディングを処理するようにするにはどうすればよいですか?

分類Dev

プログラムのテキストウィンドウ内でリアルタイムに外部から受信したデータ出力を変更するにはどうすればよいですか?

分類Dev

データフレーム内のアイテムのカウントを行い、結果をデータフレーム内の新しい列に割り当てるにはどうすればよいですか?

分類Dev

ディレクトリ内のすべての新しいファイルに新しいファイル名を作成するようにプログラムをコーディングするにはどうすればよいですか?

分類Dev

Goテンプレート:テンプレート内の配列項目(arr [2])にアクセスするにはどうすればよいですか?

分類Dev

resolveCodeLens内のレンズをフィルタリングするにはどうすればよいですか?

Related 関連記事

  1. 1

    同じプロパティ内のオブジェクトの配列をフィルタリングするにはどうすればよいですか?

  2. 2

    フィルタリングされたリスト内のアイテムの数を取得するにはどうすればよいですか?

  3. 3

    ReactJSとReduxでリスト内のアイテムをフィルタリングするにはどうすればよいですか?

  4. 4

    tornadofxアプリ内のobservableArrayListにバインドされたアイテムのフィルタリングを可能にするためにビューをリファクタリングするにはどうすればよいですか?

  5. 5

    別の配列にあるアイテムに基づいて配列をフィルタリングするにはどうすればよいですか?

  6. 6

    Reactの画面に表示されている配列のアイテムをフィルタリングするにはどうすればよいですか?

  7. 7

    グループ内のアイテムをパンダのリターンブール値と比較するにはどうすればよいですか?

  8. 8

    タプルのアイテムでタプルのリストをフィルタリングするにはどうすればよいですか?

  9. 9

    ある配列のすべてのアイテムが別の配列のアイテムの一部と一致する配列の配列から配列をフィルタリングするにはどうすればよいですか?

  10. 10

    リスト/単一アイテムテンプレートのEmberルーティングを構成するにはどうすればよいですか?

  11. 11

    数値の配列からngRepeatのアイテムをフィルタリングするにはどうすればよいですか?

  12. 12

    angleJSの配列から特定のアイテムをフィルタリングするにはどうすればよいですか?

  13. 13

    リスト内のアイテムがフィールドのどこかに表示されるかどうかに基づいて、データフレームから列を削除するにはどうすればよいですか?

  14. 14

    forループを使用してリスト内のすべてのアイテムのボタンを作成するにはどうすればよいですか?

  15. 15

    Rのデータフレーム内のリストの値をフィルタリングするにはどうすればよいですか?

  16. 16

    Knockoutjsテンプレート:いくつかのプロパティで配列をフィルタリングした後、2つのDOM要素に1つのオブジェクト配列を使用するにはどうすればよいですか?

  17. 17

    レルムReactNativeのリストに含まれるアイテムでフィルタリングするにはどうすればよいですか?

  18. 18

    Rシャイニー内のリーフレットマップからの入力に基づいてデータテーブルをフィルタリングするにはどうすればよいですか?

  19. 19

    オブジェクトの配列内のプロパティの最初の文字に基づいてオブジェクトの配列をフィルタリングするにはどうすればよいですか?

  20. 20

    次のステップに進まずに出力をレンダリングするDjangoのマルチステップフォームウィザード内に選択ボタンを作成するにはどうすればよいですか?

  21. 21

    パンダのリストに基づいてDataFrameのアイテムをフィルタリングするにはどうすればよいですか?

  22. 22

    配列インデックスが動的に決定される配列内の特定のアイテムに対して双方向のデータバインディングを行うにはどうすればよいですか?

  23. 23

    ラムダを使用して、第2レベルのリスト内のオブジェクトのプロパティでリストをフィルタリングするにはどうすればよいですか?

  24. 24

    カスタムUserControlがDataTrigger内のテンプレートセッター内にあるときに双方向バインディングを処理するようにするにはどうすればよいですか?

  25. 25

    プログラムのテキストウィンドウ内でリアルタイムに外部から受信したデータ出力を変更するにはどうすればよいですか?

  26. 26

    データフレーム内のアイテムのカウントを行い、結果をデータフレーム内の新しい列に割り当てるにはどうすればよいですか?

  27. 27

    ディレクトリ内のすべての新しいファイルに新しいファイル名を作成するようにプログラムをコーディングするにはどうすればよいですか?

  28. 28

    Goテンプレート:テンプレート内の配列項目(arr [2])にアクセスするにはどうすればよいですか?

  29. 29

    resolveCodeLens内のレンズをフィルタリングするにはどうすればよいですか?

ホットタグ

アーカイブ