【发布时间】:2015-03-16 10:28:44
【问题描述】:
我的数据看起来像这些样本:
样本 1:
<?xml version="1.0" encoding="UTF-8" ?>
<MYDATA type="store">
<STORE_ID lang="en">44</STORE_ID>
<!-- Many other elements here -->
<MON lang="en">C</MON>
<TUE lang="en">C</TUE>
<WED lang="en">C</WED>
<THU lang="en">C</THU>
<FRI lang="en">C</FRI>
<SAT lang="en">C</SAT>
<SUN lang="en">C</SUN>
</MYDATA>
示例 2:
<?xml version="1.0" encoding="UTF-8" ?>
<MYDATA type="store">
<STORE_ID lang="en">48</STORE_ID>
<!-- Many other elements here -->
<MON lang="en">O</MON>
<TUE lang="en">O</TUE>
<WED lang="en">O</WED>
<THU lang="en">O</THU>
<FRI lang="en">O</FRI>
<SAT lang="en">O</SAT>
<SUN lang="en">C</SUN>
</MYDATA>
我有一个 XSL 样式表来将该 XML 转换为另一个。
我想在某个地方添加一个元素,当且仅当在任何一天(周一到周日)中至少有一个“O”。 (样品1不能通过测试,样品2必须通过测试)
我试过这段代码:
<xsl:if test="count(matches(node-name(), '(MON)(TUE)(WED)(THU)(FRI)(SAT)(SUN)')[text()='O'])>0">
<OpeningHours id='boutique'>
<xsl:call-template name="descriptionTemplate" />
<xsl:call-template name="scheduleTemplate" />
</OpeningHours>
</xsl:if>
但是这个语法不被接受(错误:Failed to compile stylesheet)
我正在寻找 XSLT 1.0 或 XSLT 2.0 中更简单的解决方案。
【问题讨论】:
标签: regex xml xslt if-statement