1

次の XML コードがあり、xslt を使用して特定の属性を抽出する必要があります。1000行あるかもしれません。各行をループする必要があります。FeatureDisplay が無効な場合は、対応するパーツと機能コードが間違っていることをユーザーに表示する必要があります。私の検証条件は次のとおりです。

  1. FeatureDisplay の長さが 5 未満の場合、エラーをスローします
  2. FeatureDisplay の長さが 5 より長い場合は、検証部分で、文字列を長さ 6 の部分文字列に分割します。部分文字列をテストします。部分文字列の最後の値は ; にする必要があります。または|。位置 0 または 4 の値が空白の場合、エラーがスローされます。位置 0 から 4 の値が英数字、「@」、または空白以外の場合は、エラーがスローされます。部分文字列がさらにある場合は、テスト プロセスを繰り返します。

FeatureDisplay 値が 12345 の場合;98765; 12345 としてブレークする必要があります。そして98765; 各部分文字列をテストし、無効な文字列がある場合はエラーをスローする必要があります。

私のxmlコードは

<sample>
<row>
  <FeaturesDisplay>
     <NewValue>VLTUB2</NewValue>
  </FeaturesDisplay>
  <part>
    <NewValue>a</NewValue>
  </part>
</row>
<row>
  <FeaturesDisplay>
     <NewValue>VLTU</NewValue>
  </FeaturesDisplay>
  <part>
    <NewValue>b</NewValue>
  </part>
</row>
  
</sample>
4

1 に答える 1

1

あなたはこのような何かをすることができます:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">

<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
    <list>
        <xsl:apply-templates/>
    </list>
</xsl:template>

<xsl:template match="//NewValue">
    <output>
    <xsl:choose>
        <xsl:when test="string-length(.)&lt;5">
            <xsl:value-of select="."/>
        </xsl:when>
        <xsl:otherwise>
            <xsl:value-of select="substring(.,1,1)"/>
        </xsl:otherwise>
    </xsl:choose>
    </output>
</xsl:template>


</xsl:stylesheet>

の文字列の長さがNewValue5より小さい場合はその値を示し、そうでない場合は最初の文字のみを示します。XMLソースに適用されたXSLは、次の出力を提供します。

<?xml version="1.0" encoding="UTF-8"?>
<list>
<output>V</output>
<output>VLTU</output>
</list>

XSLTを特定のニーズに適合させてください。

于 2013-03-13T16:22:18.753 に答える