2017-05-17 9 views
0

JMeterでいくつかのパフォーマンステストを作成していますが、テストスクリプトを可能な限り構成可能にしようとしています。例えば私は、このXMLを使用します。xsl:各タグ値を変換する

<Party> 
    <Id>123456</Id> 
</Party> 
<Agreement> 
    <InternalAgreement> 
     <Id>2508153801</Id> 
     <AgreementType>UYTU</AgreementType> 
     <AgreementTypeCombination>ULLL</AgreementTypeCombination> 
     <ContractType>3</ContractType> 
     <IdCombination>250851536</IdCombination> 
     <ProductCode>A260</ProductCode> 
    </InternalAgreement> 
</Agreement> 
<PartyAgreementRole> 
    <PartyInternalAgreementRole> 
     <PartyAgreementRoleType>AWS</PartyAgreementRoleType> 
     <RoleTypeSequenceNumber>054</RoleTypeSequenceNumber> 
     <EndDate>2016-11-28</EndDate> 
    </PartyInternalAgreementRole> 
</PartyAgreementRole> 

私は(異なるIDのは言うまでもなく)以下に、上記のXMLを変換するXSLTを使用したい:

<Party> 
    <Id>${Id_1}</Id> 
</Party> 
<Agreement> 
    <InternalAgreement> 
     <Id>${Id_2}</Id> 
     <AgreementType>${AgreementType}</AgreementType> 
     <AgreementTypeCombination>${AgreementTypeCombination}</AgreementTypeCombination> 
     <ContractType>${ContractType}</ContractType> 
     <IdCombination>${IdCombination}</IdCombination> 
     <ProductCode>${ProductCode}</ProductCode> 
    </InternalAgreement> 
</Agreement> 
<PartyAgreementRole> 
    <PartyInternalAgreementRole> 
     <PartyAgreementRoleType>${PartyAgreementRoleType}</PartyAgreementRoleType> 
     <RoleTypeSequenceNumber>${RoleTypeSequenceNumber}</RoleTypeSequenceNumber> 
     <EndDate>${EndDate}</EndDate> 
    </PartyInternalAgreementRole> 
</PartyAgreementRole> 

は、これまで私は、ジェネリックを作成するために管理していませんこれを行うxsltのソリューション。これまでのところ、私は作ってみた:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> 
<xsl:output method="xml" encoding="UTF-8" indent="yes"/> 
<xsl:template match="node()|@*"> 
    <xsl:copy> 
     <xsl:apply-templates select="node()|@*"/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="node()/text()[.='VN']">${PartyAgreementRoleType}</xsl:template> 

それは解決にはほど遠いです。誰かが正しい方向に私を向けることができますか?

答えて

1

サンプル入力にVNが存在しないようですので、<xsl:template match="node()/text()[.='VN']">${PartyAgreementRoleType}</xsl:template>があなたのコードでわかりません。その後、

あなたが

<xsl:template match="Id"> 
    <xsl:copy> 
     <xsl:text>${Id_</xsl:text> 
     <xsl:number level="any"/> 
     <xsl:text>}</xsl:text> 
    </xsl:copy> 
</xsl:template> 

Id要素を移入したい場合は、動作するはずですし、他の要素は、自分の名前が移入される場合に

<xsl:template match="*[not(*)]"> 
    <xsl:copy> 
     <xsl:text>${</xsl:text> 
     <xsl:value-of select="local-name()"/> 
     <xsl:text>}</xsl:text> 
    </xsl:copy> 
</xsl:template> 

ので、それらを取って、それを達成すべきです一緒にテンプレートを取得

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> 

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

    <xsl:template match="*[not(*)]"> 
     <xsl:copy> 
      <xsl:text>${</xsl:text> 
      <xsl:value-of select="local-name()"/> 
      <xsl:text>}</xsl:text> 
     </xsl:copy> 
    </xsl:template> 

    <xsl:template match="Id" priority="5"> 
     <xsl:copy> 
      <xsl:text>${Id_</xsl:text> 
      <xsl:number level="any"/> 
      <xsl:text>}</xsl:text> 
     </xsl:copy> 
    </xsl:template> 

</xsl:transform> 

どのtransfオームズhttp://xsltransform.net/naZXpWR/1

<?xml version="1.0" encoding="UTF-8"?><Root> 
<Party> 
    <Id>${Id_1}</Id> 
</Party> 
<Agreement> 
    <InternalAgreement> 
     <Id>${Id_2}</Id> 
     <AgreementType>${AgreementType}</AgreementType> 
     <AgreementTypeCombination>${AgreementTypeCombination}</AgreementTypeCombination> 
     <ContractType>${ContractType}</ContractType> 
     <IdCombination>${IdCombination}</IdCombination> 
     <ProductCode>${ProductCode}</ProductCode> 
    </InternalAgreement> 
</Agreement> 
<PartyAgreementRole> 
    <PartyInternalAgreementRole> 
     <PartyAgreementRoleType>${PartyAgreementRoleType}</PartyAgreementRoleType> 
     <RoleTypeSequenceNumber>${RoleTypeSequenceNumber}</RoleTypeSequenceNumber> 
     <EndDate>${EndDate}</EndDate> 
    </PartyInternalAgreementRole> 
</PartyAgreementRole> 
</Root> 

オンラインに

<Root> 
<Party> 
    <Id>123456</Id> 
</Party> 
<Agreement> 
    <InternalAgreement> 
     <Id>2508153801</Id> 
     <AgreementType>UYTU</AgreementType> 
     <AgreementTypeCombination>ULLL</AgreementTypeCombination> 
     <ContractType>3</ContractType> 
     <IdCombination>250851536</IdCombination> 
     <ProductCode>A260</ProductCode> 
    </InternalAgreement> 
</Agreement> 
<PartyAgreementRole> 
    <PartyInternalAgreementRole> 
     <PartyAgreementRoleType>AWS</PartyAgreementRoleType> 
     <RoleTypeSequenceNumber>054</RoleTypeSequenceNumber> 
     <EndDate>2016-11-28</EndDate> 
    </PartyInternalAgreementRole> 
</PartyAgreementRole> 
</Root> 

+0

Martin、あなたの知識を共有していただきありがとうございます。あなたのソリューションは、私が起こりたいものとまったく同じでした。もちろん、「VN」は「AWS」だったはずです – fasln01