我有一个像这样的XML文件:
<root>
<node ID="1" />
<node ID="2" />
<node ID="3" />
<node ID="4" />
<node ID="5" />
<node ID="6" />
<node ID="7" get="1" />
<node ID="8" get="1 & 3" />
<node ID="9" get="(2 | 23) & 3" />
<node ID="10" get="((2 | 3) & 1) & 15" />
</root>
忽略前6个节点一秒钟。我的XSLT正在处理节点7-10。 我想做的是&#34;流程&#34; &#34;得到&#34;作为根据节点是否存在以及公式得到真或假的公式。 &
是logical and
而|
是logical or
。
例如:
or
有没有用纯XSLT 1.0做这样的事情?
如果重要,我可以修改get
值的格式,如果有其他格式可以让我更容易做到我想要的。
我认为需要发生的是我将要检查的每个节点get
的值(在这种情况下为7-10)发送给将要处理&#34;处理&#34;的函数。公式并返回true或false。
答案 0 :(得分:0)
如果重要,我可以修改
$('.livesearch a').click(function(e) { e.preventDefault(); var value = $(this).html(); var TheTextBox = document.getElementById("addressbox"); TheTextBox.value = value; });
值的格式(如果有) 其他一些格式可以让我更容易做到我想要的。
好吧,如果你重新格式化get
值,那么:
get
; and
; or
,而不仅仅是其ID号这样你的输入XML实际上就像这样:
<强> XML 强>
node[@ID=N]
然后您可以应用以下样式表:
XSLT 1.0
<root>
<node ID="1" />
<node ID="2" />
<node ID="3" />
<node ID="4" />
<node ID="5" />
<node ID="6" />
<node ID="7" get="node[@ID=1]" />
<node ID="8" get="node[@ID=1] and node[@ID=3]" />
<node ID="9" get="(node[@ID=1] or node[@ID=23]) and node[@ID=3]" />
<node ID="10" get="((node[@ID=2] or node[@ID=1]) and node[@ID=1]) and node[@ID=15]" />
</root>
收到此结果:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:axsl="http://www.w3.org/1999/XSL/TransformAlias">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:namespace-alias stylesheet-prefix="axsl" result-prefix="xsl"/>
<xsl:template match="/root">
<axsl:stylesheet version="1.0">
<axsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<axsl:template match="/root">
<output>
<xsl:for-each select="node[@get]">
<result ID="{@ID}">
<axsl:value-of select="boolean({@get})"/>
</result>
</xsl:for-each>
</output>
</axsl:template>
</axsl:stylesheet>
</xsl:template>
</xsl:stylesheet>
此结果是有效的XSLT样式表。将其应用于输入XML将产生以下结果:
<?xml version="1.0" encoding="UTF-8"?>
<axsl:stylesheet xmlns:axsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<axsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<axsl:template match="/root">
<output>
<result ID="7">
<axsl:value-of select="boolean(node[@ID=1])"/>
</result>
<result ID="8">
<axsl:value-of select="boolean(node[@ID=1] and node[@ID=3])"/>
</result>
<result ID="9">
<axsl:value-of select="boolean((node[@ID=1] or node[@ID=23]) and node[@ID=3])"/>
</result>
<result ID="10">
<axsl:value-of select="boolean(((node[@ID=2] or node[@ID=1]) and node[@ID=1])and node[@ID=15])"/>
</result>
</output>
</axsl:template>
</axsl:stylesheet>