English 中文(简体)
XML来源档案中的Valying xpath-default-namespace
原标题:Varying xpath-default-namespace in XML source files

我有一套XML文件,由XSL变革处理。 他们有一个假名空间,因此,我的SL变革必须包含以下声明:

xpath-default-namespace=“urn:CZ-RV-IS-VaV-XML-NS:data-1.2.2”

问题在于,这种价值不时变化,而我的改革突然停止了工作,直到我从新档案中看到一个例子,从中提取这一名称空间,并把它放在变革中,即变革停止为旧档案工作。 是否有办法将这一参数作为参数加以利用,或者在操作时间加以确定? 我已尝试过我在各种辅导中研究的参数合成物,但没有人为此而努力。

我搜索了各种论坛,并找到了SL名称空间-信号编码,但没有说明如何这样做。 伊恩·威廉斯书“XSLT和Xpath”指出,必须宣布缺省名称空间,或者在产出流中找不到任何东西,这就是它如何为我工作。 但是,我真的不想经常地改变这种状况,但我要向用户提供一些工作,无需我不断关注。

我迄今为止发明的唯一100%可靠方式是使用标准的方案拟订语言,将XML来源和XSL变换成文本档案,从XML来源提取URI,将其压入XSL的变压,既关闭档案,又最后进行实际转变。 这一工作,但令人难以置信,至少是我的口号。 我如何能够更好地处理不断变化的缺省名称空间?

Pete

最佳回答

xpath-default-name-space必须是一种静止的URI,因此,如果你想改变,就必须先处理风格。 这样做的一个途径是使用异常低价竞标。 每次使用以下元式表格,然后使用预处理结果。

<xsl:stylesheet version="2.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <!-- Pass in the new namespace URI as a stylesheet parameter -->
  <xsl:param name="new-uri" required="yes"/>

  <!-- By default, copy everything as is -->
  <xsl:template match="@* | node()">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
  </xsl:template>

  <!-- But update the value of @xpath-default-namespace -->
  <xsl:template match="@xpath-default-namespace">
    <xsl:attribute name="{name()}" namespace="{namespace-uri()}">
      <xsl:value-of select="$new-uri"/>
    </xsl:attribute>
  </xsl:template>

</xsl:stylesheet>

这是一种奇怪的使用案例,因为名称空间实际上设计成如此动态。 他们的设计是为了确定姓名,即构成姓名的一部分。 当你看着这种方式时,充满活力的国名空间没有多少意义。 创建一个数据库,其表格和外地名称每一度发生一次任意变化,迫使你重写所有你的书,以跟上变化。 这等于是这样。

问题回答

您是否尝试界定一个风格表格参数:<xsl:param name=“xpdn”/>,并在风格声明或最高标准声明中加以使用,如上所示。

<xsl:template match="...." xpath-default-namespace="$xpdn">

我在说这打赢了不起的工作的幽灵中找不到任何东西(但现在我无法尝试)。





相关问题
静态启动的探测阶段?

我真的想要是什么,我如何知道C++初始阶段究竟是谁?

Namespace convention for Objective-C

I d like to group classes so they must be referenced like this: Root.Web Root.Mail Root.Audio Each of the above classes corresponds to a file: Web.h Mail.h Audio.h The goal is to use the above "...

(Conventions) C# Class names

I m not too quite sure about what i should do about a grouped set of classes. My situation: I have 11 classes that relate only to the class Character.cs, but all of those classes (including ...

the compiler doesn t seem to accept Agent class

probably the answer is quite silly but I need a pair fresh of eyes to spot the problem, if you will. this is the excerpt from _tmain: Agent theAgent(void); int m = theAgent.loadSAG(); and this is ...

How to resolve Rails model namespace collision

The story so far: I have a rails app with a model named "Term". All is well until trying to install Cucumber. Upon running rake cucumber I get Term is not a class (TypeError) This happens because ...

XSLT Transform XML with Namespaces

I m trying to transform some XML into HTML using XSLT. Problem: I can t get it to work. Can someone tell me what I m doing wrong? XML: <ArrayOfBrokerage xmlns:i="http://www.w3.org/2001/...

WebForms and ASP.NET MVC co-existence

I am trying to make a WebForms project and ASP.NET MVC per this question. One of the things I ve done to make that happen is that I added a namespaces node to the WebForms web.config: <pages ...

热门标签