XSLT命名空间输出&&内部调用

简介: <p><strong>XSLT命名空间输出问题:</strong></p> <p><span style="white-space:pre"></span>此属性exclude-result-prefixes可以控制命名空间的输出,比如:exclude-result-prefixes="ne xn en"【注意:命名空间前缀用空格分隔】表示在输出中不出现该命名空间的前缀列表{ne, xm

XSLT命名空间输出问题:

此属性exclude-result-prefixes可以控制命名空间的输出,比如:exclude-result-prefixes="ne xn en"【注意:命名空间前缀用空格分隔】表示在输出中不出现该命名空间的前缀列表{ne, xm, en}。


XSLT中回车换行表示:

<xsl:text>&#10;</xsl:text>

<xsl:text>&#xa;</xsl:text>


XSLT内部调用举例:

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="2.0"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns:ne="http://www.3gpp.org/ftp/specs/archive/32_series/32.615#configData"
	xmlns:xn="http://www.3gpp.org/ftp/specs/archive/32_series/32.625#genericNrm"
	xmlns:en="http://www.3gpp.org/ftp/specs/archive/32_series/32.765#eutranNrm"
	exclude-result-prefixes="ne xn en">
	
	<xsl:output method="xml" indent="yes" encoding="UTF-8" />

	<xsl:template match="/">	
		<NrmFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
			xsi:noNamespaceSchemaLocation="NrmFileFormat.xsd">
			<xsl:element name="CM">
			
				<xsl:for-each select="//xn:ManagedElement [*]">
					<xsl:variable name="ManagedBy" select="xn:attributes/xn:ManagedBy" />
					<xsl:variable name="ManagedElementID" select="@id" />

					<xsl:variable name="PrefixDN">
						<xsl:call-template name="substring-first">
							<xsl:with-param name="text" select="$ManagedBy" />
							<xsl:with-param name="splitor1" select="','" />
							<xsl:with-param name="splitor2" select="'\,'" />
						</xsl:call-template>
					</xsl:variable>

					<xsl:attribute name="Dn">
						<xsl:value-of select="concat($PrefixDN, ',ManagedElement=',$ManagedElementID)" />
					</xsl:attribute>
					
					<ManagedElementId>
						<xsl:value-of select="$ManagedElementID" />
					</ManagedElementId>
						
					<UserLabel>
						<xsl:value-of select="en:attributes/en:UserLabel" />
					</UserLabel>						
					
				</xsl:for-each>
				
			</xsl:element>
		</NrmFile>
	</xsl:template>
	
	<xsl:template name="substring-first">
		<xsl:param name="text" />
		<xsl:param name="splitor1" />
		<xsl:param name="splitor2" />
		<xsl:choose>
			<xsl:when test="contains($text, $splitor2)">
				<xsl:value-of select="substring-before($text,$splitor2)" />
			</xsl:when>
			<xsl:otherwise>
				<xsl:choose>
					<xsl:when test="contains($text, $splitor1)">
						<xsl:value-of select="substring-before($text,$splitor1)" />
					</xsl:when>
					<xsl:otherwise>
						<xsl:value-of select="$text" />
					</xsl:otherwise>
				</xsl:choose>
			</xsl:otherwise>
		</xsl:choose>
	</xsl:template>	
	
	<xsl:template name="string-replace-all">
		<xsl:param name="text" />
		<xsl:param name="old" />
		<xsl:param name="new" />
		<xsl:choose>
			<xsl:when test="contains($text, $old)">
				<xsl:value-of select="substring-before($text,$old)" />
				<xsl:value-of select="$new" />
				<xsl:call-template name="string-replace-all">
					<xsl:with-param name="text" select="substring-after($text,$old)" />
					<xsl:with-param name="old" select="$old" />
					<xsl:with-param name="new" select="$new" />
				</xsl:call-template>
			</xsl:when>
			<xsl:otherwise>
				<xsl:value-of select="$text" />
			</xsl:otherwise>
		</xsl:choose>
	</xsl:template>
</xsl:stylesheet>
相关文章
|
7月前
|
Java 数据库连接 数据库
|
9月前
|
索引
封装vuetify3中v-time-picker组件,并解决使用时分秒类型只能在修改秒之后v-model才会同步更新的问题
封装vuetify3中v-time-picker组件,并解决使用时分秒类型只能在修改秒之后v-model才会同步更新的问题
92 2
|
10月前
TS类型声明的方法之二
TS类型声明的方法之二
43 0
|
10月前
|
JavaScript 前端开发 开发者
date对象用法?
date对象用法?
77 1
|
10月前
|
JavaScript
js知识总结 -- Math对象、data日期对象的方法及功能
js知识总结 -- Math对象、data日期对象的方法及功能
78 0
|
存储 数据挖掘 数据库
data的含义与作用及使用方法
data的含义与作用及使用方法
6525 0
python--类-实例-继承中变量的id是否变化
python--类-实例-继承中变量的id是否变化
133 0
设计一个名为Time的类,这个类包含:表示时间的数据域hour,minute和second
设计一个名为Time的类,这个类包含:表示时间的数据域hour,minute和second
364 0
|
JavaScript 前端开发 开发者
BOM(一)概述、history对象、location对象、navigator对象、事件
BOM(一)概述、history对象、location对象、navigator对象、事件
268 0
BOM(一)概述、history对象、location对象、navigator对象、事件