xslt验证

时间:2013-03-13 13:56:40

标签: xml xslt

我有以下XML代码,我需要使用xslt提取一些特定属性。可能有1000行。它应该遍历每一行。如果FeatureDisplay无效,它应该向用户显示相应的部分和功能码是错误的。 我的验证条件是: 1.如果FeatureDisplay长度小于5则抛出错误 2.如果FeatureDisplay长度大于5,则在验证部分期间,将字符串分解为长度为6的子字符串。测试子字符串。子串的最后一个值应该是;或者。如果位置0或4处的值是空白则抛出错误。如果位置0到4的值不是字母数字值或“@”或空格,则抛出错误。如果有更多子串,请重复测试过程。

如果FeatureDisplay值为12345; 98765;它应该打破12345;和98765;如果有任何无效字符串,它应测试每个子字符串并抛出错误。

有人请帮助上述情况吗?我不知道这个xslt。我是新来的。刚刚学习XSLT。我试过自己,但没有得到任何东西。如果我得到答案,对我来说会很有帮助。

我的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>

1 个答案:

答案 0 :(得分: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>

如果NewValue的字符串长度小于5,则给出该值,否则只给出第一个字符。应用于XML源的XSL提供了以下输出:

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

请根据您的具体需求调整XSLT。请始终包含预期的输出 - 让人们更容易回答并提供相应的帮助。

祝你好运, 彼得