0
我試着在這裏搜索我的問題,並沒有成功。XSLT布爾值
<xsl:for-each select="$all_events[g:active = 1]">
<xsl:sort select="g:event_date" order="descending"/>
<xsl:variable name="fileName"><xsl:value-of select="fn:replaceAll(string(@alf:file_name), '.xml', '.html')"/></xsl:variable>
<xsl:variable name="fileURL"><xsl:value-of select="concat('/events/', $fileName)" /></xsl:variable>
<xsl:variable name="fileDate"><xsl:value-of select="g:event_date" /></xsl:variable>
<xsl:variable name="date"><xsl:value-of select="substring($fileDate, 6, 2)" /></xsl:variable>
<li><a href="{$fileURL}"><xsl:value-of select="g:event_title"/></a></li>
</xsl:for-each>
</ul><br/>
<xsl:for-each select="$all_events[g:body/g:current = 1]">
<xsl:for-each select="g:body">
<h2 class="normal"><xsl:value-of select="g:sub_title" /></h2>
<xsl:for-each select="g:paragraphs">
<xsl:value-of select="g:paragraph" disable-output-escaping="yes"/>
</xsl:for-each>
</xsl:for-each>
</xsl:for-each>
我有兩個的for-each語句檢查我的XSD爲true或false值:
<xs:simpleType name="confirm">
<xs:restriction base="xs:boolean"/>
</xs:simpleType>
<xs:element name="active" type="g:confirm" minOccurs="0"/>
<xs:element name="current" type="g:confirm" minOccurs="0"/>
上面沒有爲我工作。我也試過true()/false()
,這似乎也失敗了。
我錯過了一些明顯的東西嗎?
編輯: 布爾值是在Alfresco CMS中的複選框,所以我不能簡單地檢查它的存在,而是它是真是假。
<xs:simpleType name="confirm">
<xs:restriction base="xs:boolean"/>
</xs:simpleType>
<xs:element name="content">
<xs:complexType>
<xs:sequence>
<xs:element name="page_title" type="xs:normalizedString" minOccurs = "0">
<xs:annotation>
<xs:appinfo>
<alf:appearance>title</alf:appearance>
</xs:appinfo>
</xs:annotation>
</xs:element>
<xs:element name="event_title" type="xs:normalizedString" minOccurs = "0">
<xs:annotation>
<xs:appinfo>
<alf:appearance>title</alf:appearance>
</xs:appinfo>
</xs:annotation>
</xs:element>
<xs:element name="active" type="g:confirm" minOccurs="0"/>
<xs:element name="event_date" type="xs:date" />
<xs:element name="body" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="sub_title" type="xs:normalizedString" minOccurs = "0">
<xs:annotation>
<xs:appinfo>
<alf:appearance>title</alf:appearance>
</xs:appinfo>
</xs:annotation>
</xs:element>
<xs:element name="current" type="g:confirm" minOccurs="0"/>
<xs:element name="paragraphs" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="paragraph" type="xs:string" minOccurs = "0">
<xs:annotation>
<xs:appinfo>
<alf:appearance>custom</alf:appearance>
</xs:appinfo>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
所以像這樣'$ all_events [boolean(g:active)= 1]'? – balexander 2010-07-27 13:11:12
不需要這樣的比較。 '$ all_events [boolean(g:active)]'會做得很好。如果您需要比較某些內容,請與實際布爾值進行比較,如下所示:'$ all_events [boolean(g:active)= true()]'。再次,這不是必要的。 – Welbog 2010-07-27 13:12:21
我相信我必須指定它是真是假,因爲現在是否複選框被選中或不顯示。添加「true()」的事件不起作用。 – balexander 2010-07-27 13:18:12