⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lucene.xsl.svn-base

📁 由国外的一个著名的geonetwork修改而来
💻 SVN-BASE
字号:
<?xml version="1.0" encoding="UTF-8" ?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"xmlns:xalan= "http://xml.apache.org/xalan" exclude-result-prefixes="xalan"><xsl:import href="parser.xsl"/><xsl:import href="lucene-utils.xsl"/><xsl:variable name="regions" select="document('regions.xml')"/><xsl:variable name="opView"     select="'_op0'"/><xsl:variable name="opDownload" select="'_op1'"/><xsl:variable name="opDynamic"  select="'_op5'"/><xsl:variable name="opFeatured" select="'_op6'"/><xsl:variable name="similarity" select="/request/similarity"/><!--computes bounding box values--><xsl:variable name="region" select="string(/request/region)"/><xsl:variable name="regionData" select="$regions/regions/*[string(id)=$region]"/><xsl:variable name="westBL">	<xsl:choose>		<xsl:when test="$region"><xsl:value-of select="$regionData/west + 360"/></xsl:when>		<xsl:otherwise><xsl:value-of select="/request/westBL + 360"/></xsl:otherwise>	</xsl:choose></xsl:variable><xsl:variable name="eastBL">	<xsl:choose>		<xsl:when test="$region"><xsl:value-of select="$regionData/east + 360"/></xsl:when>		<xsl:otherwise><xsl:value-of select="/request/eastBL + 360"/></xsl:otherwise>	</xsl:choose></xsl:variable><xsl:variable name="southBL">	<xsl:choose>		<xsl:when test="$region"><xsl:value-of select="$regionData/south + 360"/></xsl:when>		<xsl:otherwise><xsl:value-of select="/request/southBL + 360"/></xsl:otherwise>	</xsl:choose></xsl:variable><xsl:variable name="northBL">	<xsl:choose>		<xsl:when test="$region"><xsl:value-of select="$regionData/north + 360"/></xsl:when>		<xsl:otherwise><xsl:value-of select="/request/northBL + 360"/></xsl:otherwise>	</xsl:choose></xsl:variable><!--compiles a request--><xsl:template match="/">	<BooleanQuery>				<!-- title -->		<xsl:call-template name="textField">			<xsl:with-param name="expr" select="/request/title"/>			<xsl:with-param name="field" select="'title'"/>		</xsl:call-template>				<!-- abstract -->		<xsl:call-template name="textField">			<xsl:with-param name="expr" select="/request/abstract"/>			<xsl:with-param name="field" select="'abstract'"/>		</xsl:call-template>				<!-- any -->		<xsl:call-template name="textField">			<xsl:with-param name="expr" select="/request/any"/>			<xsl:with-param name="field" select="'any'"/>		</xsl:call-template>		<xsl:call-template name="textField">			<xsl:with-param name="expr" select="/request/themekey"/>			<xsl:with-param name="field" select="'keyword'"/>		</xsl:call-template>		<!-- digital and paper maps -->				<!-- if both are off or both are on then no clauses are added -->		<xsl:if test="string(/request/digital)='on' and string(/request/paper)=''">			<BooleanClause required="true" prohibited="false">				<TermQuery fld="digital" txt="true"/>			</BooleanClause>		</xsl:if>		<xsl:if test="string(/request/paper)='on' and string(/request/digital)=''">			<xsl:message>******** PAPER</xsl:message>			<BooleanClause required="true" prohibited="false">				<TermQuery fld="paper" txt="true"/>			</BooleanClause>		</xsl:if>				<!-- online and download -->		<!-- disabled		<xsl:choose>						<!- - online or download - ->			<xsl:when test="string(/request/online)='on' and string(/request/download)='on'">				<BooleanClause required="true" prohibited="false">					<BooleanQuery>						<BooleanClause required="false" prohibited="false">							<BooleanQuery>								<xsl:call-template name="online"/>							</BooleanQuery>						</BooleanClause>						<BooleanClause required="false" prohibited="false">							<BooleanQuery>								<xsl:call-template name="download"/>							</BooleanQuery>						</BooleanClause>					</BooleanQuery>				</BooleanClause>			</xsl:when>			<!- - online - ->			<xsl:when test="string(/request/online)='on'">				<xsl:call-template name="online"/>			</xsl:when>						<!- - download - ->			<xsl:when test="string(/request/download)='on'">				<xsl:call-template name="download"/>			</xsl:when>					</xsl:choose>		-->				<!-- bounding box -->			<xsl:choose>								<!-- equal -->				<xsl:when test="string(/request/relation)='equal'">					<xsl:call-template name="equal"/>				</xsl:when>								<!-- overlaps -->				<xsl:when test="string(/request/relation)='overlaps'">					<xsl:call-template name="overlaps"/>				</xsl:when>				<!-- fullyOutsideOf -->				<xsl:when test="string(/request/relation)='fullyOutsideOf'">					<xsl:call-template name="fullyOutsideOf"/>				</xsl:when>				<!-- encloses -->				<xsl:when test="string(/request/relation)='encloses'">					<xsl:call-template name="encloses"/>				</xsl:when>				<!-- fullyEnclosedWithin -->				<xsl:when test="string(/request/relation)='fullyEnclosedWithin'">					<xsl:call-template name="fullyEnclosedWithin"/>				</xsl:when>			</xsl:choose>				<xsl:choose>			<!-- featured: just use group "all" for view and featured privilege -->			<xsl:when test="string(/request/featured)='true'">				<!-- FIXME: featured privilege is unused for groups different from "all"				<xsl:call-template name="orFields">					<xsl:with-param name="expr" select="/request/group"/>					<xsl:with-param name="field" select="$opFeatured"/>				</xsl:call-template>				-->				<BooleanClause required="true" prohibited="false">					<TermQuery fld="{$opFeatured}" txt="1"/>				</BooleanClause>				<BooleanClause required="true" prohibited="false">					<TermQuery fld="{$opView}" txt="1"/>				</BooleanClause>			</xsl:when>						<!-- use all user's groups for view privileges -->			<xsl:otherwise>				<xsl:call-template name="orFields">					<xsl:with-param name="expr" select="/request/group"/>					<xsl:with-param name="field" select="$opView"/>				</xsl:call-template>			</xsl:otherwise>				</xsl:choose>				<!-- category -->		<xsl:if test="string(/request/category)!=''">			<BooleanClause required="true" prohibited="false">				<TermQuery fld="_cat" txt="{/request/category}"/>			</BooleanClause>		</xsl:if>					<!-- site id -->		<xsl:if test="string(/request/siteId)!=''">			<BooleanClause required="true" prohibited="false">				<TermQuery fld="_source" txt="{/request/siteId}"/>			</BooleanClause>		</xsl:if>		<!-- template -->		<xsl:choose>			<xsl:when test="string(/request/template)='on'">				<BooleanClause required="true" prohibited="false">					<TermQuery fld="_isTemplate" txt="y"/>				</BooleanClause>			</xsl:when>			<xsl:otherwise>				<BooleanClause required="true" prohibited="false">					<TermQuery fld="_isTemplate" txt="n"/>				</BooleanClause>			</xsl:otherwise>		</xsl:choose>	</BooleanQuery></xsl:template><!--online--><xsl:template name="online">	<BooleanClause required="true" prohibited="false">		<BooleanQuery>			<BooleanClause required="false" prohibited="false">				<TermQuery fld="protocol" txt="esri:aims-3.1-http-get-image"/>			</BooleanClause>			<BooleanClause required="false" prohibited="false">				<TermQuery fld="protocol" txt="esri:aims-4.0-http-get-image"/>			</BooleanClause>			<BooleanClause required="false" prohibited="false">				<TermQuery fld="protocol" txt="ogc:wms-1.0.0-http-get-capabilities"/>			</BooleanClause>			<BooleanClause required="false" prohibited="false">				<TermQuery fld="protocol" txt="ogc:wms-1.0.0-http-get-map"/>			</BooleanClause>		</BooleanQuery>	</BooleanClause>		<!-- online privileges -->	<xsl:call-template name="orFields">		<xsl:with-param name="expr" select="/request/group"/>		<xsl:with-param name="field" select="$opDynamic"/>	</xsl:call-template></xsl:template><!--download--><xsl:template name="download">	<BooleanClause required="true" prohibited="false">		<TermQuery fld="protocol" txt="www:download-1.0-http--download"/>	</BooleanClause>	<!-- download privileges -->	<xsl:call-template name="orFields">		<xsl:with-param name="expr" select="/request/group"/>		<xsl:with-param name="field" select="$opDownload"/>	</xsl:call-template></xsl:template><xsl:template name="textField">	<xsl:param name="expr"/>	<xsl:param name="field"/>		<xsl:if test="$expr!=''">		<BooleanClause required="true" prohibited="false">			<xsl:call-template name="compile">				<xsl:with-param name="expr" select="$expr"/>				<xsl:with-param name="field" select="$field"/>			</xsl:call-template>		</BooleanClause>	</xsl:if></xsl:template><!--compiles a parse tree into a class tree--><xsl:template name="compile">	<xsl:param name="expr"/>	<xsl:param name="field"/>		<xsl:variable name="tree">		<xsl:call-template name="parse">			<xsl:with-param name="expr" select="$expr"/>		</xsl:call-template>	</xsl:variable>	<xsl:call-template name="doCompile">		<xsl:with-param name="expr" select="xalan:nodeset($tree)/*"/>		<xsl:with-param name="field" select="$field"/>	</xsl:call-template></xsl:template><!--recursive compiler--><xsl:template name="doCompile">	<xsl:param name="expr"/>	<xsl:param name="field"/>		<xsl:choose>		<!-- tree: build a boolean query -->		<xsl:when test="name($expr)='tree'">			<xsl:variable name="required" select="$expr/@type='and'"/>			<xsl:variable name="prohibited" select="$expr/@type='not'"/>						<BooleanQuery>				<xsl:choose>					<xsl:when test="$prohibited">						<BooleanClause required="true" prohibited="false">							<!-- first clause is positive -->							<xsl:call-template name="doCompile">								<xsl:with-param name="expr" select="$expr/*[1]"/>								<xsl:with-param name="field" select="$field"/>							</xsl:call-template>						</BooleanClause>						<!-- other clauses are negative -->						<xsl:for-each select="$expr/*[position()>1]">							<BooleanClause required="false" prohibited="true">								<xsl:call-template name="doCompile">									<xsl:with-param name="expr" select="."/>									<xsl:with-param name="field" select="$field"/>								</xsl:call-template>							</BooleanClause>						</xsl:for-each>					</xsl:when>					<xsl:otherwise>						<xsl:for-each select="$expr/*">							<BooleanClause required="{$required}" prohibited="false">								<xsl:call-template name="doCompile">									<xsl:with-param name="expr" select="."/>									<xsl:with-param name="field" select="$field"/>								</xsl:call-template>							</BooleanClause>						</xsl:for-each>					</xsl:otherwise>				</xsl:choose>			</BooleanQuery>		</xsl:when>				<!-- quoted string: build a phrase query -->		<xsl:when test="$expr/@type='qstring'">			<PhraseQuery>				<xsl:call-template name="phraseQueryArgs">					<xsl:with-param name="expr" select="$expr/@text"/>					<xsl:with-param name="field" select="$field"/>				</xsl:call-template>			</PhraseQuery>		</xsl:when>				<!-- prefix string: build a prefix query -->		<xsl:when test="$expr/@type='pstring'">			<PrefixQuery fld="{$field}" txt="{$expr/@text}"/>		</xsl:when>				<!-- simple string -->		<xsl:otherwise>			<xsl:choose>				<xsl:when test="$similarity!=1"><!-- if similarity = 1 just use TermQuery -->					<FuzzyQuery fld="{$field}" txt="{$expr/@text}" sim="{$similarity}"/>				</xsl:when>				<xsl:otherwise>					<TermQuery fld="{$field}" txt="{$expr/@text}"/>				</xsl:otherwise>			</xsl:choose>		</xsl:otherwise>	</xsl:choose></xsl:template></xsl:stylesheet>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -