我有以下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>
答案 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(.)<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。请始终包含预期的输出 - 让人们更容易回答并提供相应的帮助。
祝你好运, 彼得