标签: xslt

订购价值

我正在尝试根据属性值订购商品:

<xsl:apply-templates select="Question">
    <xsl:sort order="ascending" select="@Value"></xsl:sort>
</xsl:apply-templates>
Run Code Online (Sandbox Code Playgroud)

这确实对它们进行了排序,但我可以得到像1,2,3,...... 10,11,... 20这样的值,它会命令它们1,10,11,... 2,20 ...... 3.等
我也可以像1.A,1.B,2.A,2.B值等

如何在这个优先级中订购这些值以考虑数字内容和字母?

xml xslt

0
推荐指数
1
解决办法
775
查看次数

<apply-templates />最佳做法

使用apply-templates很容易编写,难以理解代码.

是否有规则来编写易于阅读和维护的应用模板?

例如,"避免在select中使用//*","尝试在一个模板中编写所有apply-templates"或"如果可能则不使用apply-templates"

看起来很自然,有什么难看的?

xslt

0
推荐指数
1
解决办法
704
查看次数

如何从xml文档的不同部分嵌套xsl:for-each?

我将XSL放在一起,而不是创建一个NAnt构建脚本,使用XML文件作为输入来定义所有需要构建的项目.我们有许多非常相似的项目,包括标准布局和切换区域的定义标准,因此有一个XML文件定义了开发人员想要发生的事情,而不是描述它是如何完成的,这将极大地有助于构建服务的使用.

我想在产品构建XML文件的早期定义要使用的构建模式,即

<Build>
    <BuildModes>
        <Mode name="Debug" />
        <Mode name="Release" />
    </BuildModes>

    <ItemsToBuild>
        <Item name="first item" .... />
        <Item name="second item" .... />
    </ItemsToBuild>
 </Build>
Run Code Online (Sandbox Code Playgroud)

我想要一个

<xsl:for-each select="/Build/BuildModes/Mode">
    <xsl:for-each select="/Build/ItemsToBuild/Item">
        <exec program="devenv">
        <xsl:attribute name="line">
            use the @name from the Mode and other stuff from Item to build up the command line
        </xsl:attribute>
    </xsl:for-each>
</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)

现在,我可以通过在两个for-each线之间定义来保持Mode/@ name值,但这有点乱,我真正想要做的是翻转nexting以便构建模式在里面Item循环使它构建一种模式然后构建另一种模式.目前它将构建所有调试,然后构建所有发布版本.要做到这一点,我必须有几个声明,这将变得非常混乱.

因此,当源文档中的元素未嵌套时,它会嵌套.

编辑:

好吧,因为下面接受的答案显示在大多数情况下使用for-each是一个坏主意,我已将此示例重新编写为以下内容.它略有不同,因为我正在使用的架构被简化为上面的帖子,但你明白了.

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="ISO-8859-1" indent="yes"/>

<xsl:template match="/BuildDefinition">
    <xsl:apply-templates select="/BuildDefinition/VS2008SLN/DeploymentProject"/>
</xsl:template>

<xsl:template match="/BuildDefinition/VS2008SLN/DeploymentProject">
    <xsl:apply-templates select="/BuildDefinition/BuildModes/Mode">
        <xsl:with-param name="BuildTarget" select="." /> …
Run Code Online (Sandbox Code Playgroud)

xml xslt loops nested xslt-1.0

0
推荐指数
1
解决办法
8827
查看次数

XSLT基于输入XML的十进制格式

我有一种情况,我的XSLT文件应有条件地显示价格和小数,具体取决于输入XML是否包含小数.所以,我可以接收带有两种类型值的XML文件 - XML将包含格式化为小数的所有价格,最多两个位置(我称之为"Decimal-XML")或者价格将四舍五入到最接近的整数(我称之为一个"整数XML").

我的问题是我需要在XSLT文件中尽可能少地重构,然后允许它们以与XML输入相同的格式将转换应用于XHTML.为了实现这一目标,我向我的团队实施并提出了三条指导原则:

  1. format-number()在计算计算值或存储在变量中时,删除所有函数调用.请number(<value>)改用.但是,某些条件适用于此规则(见下文).
  2. 要显示该值时,请使用该format-number(<value>, '#.##')格式.这应该确保整数或十进制值将显示为最初存在于XML中.
  3. 对于可选标签(例如"折扣"),format-number(<value>, '0.00')即使仅计算该值,也要使用该功能.这是必要的,因为如果标签不存在,尝试获取值将得到NaN结果.

以下是XSLT的说明性示例:

  <x:stylesheet version="1.0" xmlns:x="http://www.w3.org/1999/XSL/Transform">
  <x:template match="/">
    <html>
      <body>
        <table border="1" width="60%">
          <tr>
            <th>Simple</th>
            <th>number()</th>
            <th>format-number(&lt;expression&gt;, '0.00')</th>
            <th>format-number(&lt;expression&gt;, '#.##')</th>
          </tr>
          <x:apply-templates />
        </table>
      </body>
    </html>
  </x:template>

  <x:template match="Item">
    <x:variable name="qty" select="number(@numItems)" />
    <x:variable name="cost" select="number(ItemCost) * $qty" />
    <x:variable name="extraCharges" select="(number(Tax) + number(TxnFee)) * $qty"/>
    <x:variable name="discount" select="format-number(Discount, '0.00') * $qty"/>
    <tr>
      <td>
      <!-- Works for Integer-XML, but values in Decimal-XML are
      *sometimes* …
Run Code Online (Sandbox Code Playgroud)

xml xslt formatting decimal xslt-1.0

0
推荐指数
1
解决办法
2万
查看次数

选择xsl过滤器

我想选择所有后代但"博客"节点.例如,只有子树应出现在输出上.我正在尝试这个xsl代码:

<xsl:template match="rdf:RDF">
    <xsl:copy>    
        <xsl:copy-of select="descendant::*[not(descendant::blog)]"/>
    </xsl:copy>
  </xsl:template>
Run Code Online (Sandbox Code Playgroud)

对于这个xml:

<rdf:RDF>
  <profesor rdf:ID="profesor_39">
    <nombre rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >Augusto</nombre>
  </profesor>
  <blog rdf:ID="blog_41">
    <entradas>
      <entrada_blog rdf:ID="entrada_blog_42">
        <etiquetas>
          <tecnologia rdf:ID="tecnologia_49">
            <termino rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
            >Atom</termino>
          </tecnologia>
        </etiquetas>
        <autor>
          <alumno rdf:ID="alumno_38">
            <nombre rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
            >Jesus</nombre>
          </alumno>
        </autor>
      </entrada_blog>
    </entradas>
    <autores rdf:resource="#alumno_38"/>
    <direccion rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
    >http://tfg1.unex.es/10comunidad/wordpress/</direccion>
  </blog>
</rdf:RDF>
Run Code Online (Sandbox Code Playgroud)

我错过了什么?"博客"节点仍然打印在输出上.谢谢.

xslt filter

0
推荐指数
1
解决办法
3303
查看次数

在XSLT中替换XML值

我无法编辑XML,我只想在XSLT文件中更改XML数据.

<xsl:value-of select="Name" disable-output-escaping="yes"/>
Run Code Online (Sandbox Code Playgroud)

XML数据的价值是"Northfield Bancorp Inc.(MHC)",我想用"Northfield Bancorp Inc."(删除"MHC")替换它.

XSLT中是否有可用的功能可以搜索并替换它?

xslt

0
推荐指数
1
解决办法
3018
查看次数

XSLT和XML问题

我有这个有趣的要求.

通常,您使用XSLT转换XML文档.转换后的HTML可以在Web浏览器中查看,这非常有用.我也猜测浏览器处理内存中的转换,因为如果你使用XSLT查看xml文档的页面源,你就看不到html,只看到xml.

我想做的是以下内容.

使用c#

  1. 从fileSystem中获取一个xml文件....将其加载到某个框架对象中
  2. 附加XSLT样式表
  3. 将呈现的HTML输出回文件系统上的html文件.

这可能吗.

我不希望对整个解决方案有完整的答案.只是推动正确的方向将是伟大的:)提前感谢.

.net c# xml xslt

0
推荐指数
1
解决办法
243
查看次数

为什么我的XSLT片段导致错误?

我试图使用下面的代码来检查我的变量是否包含单词NOT_INTERFACED.所以我使用了end-with函数.

但如果确实如此,我想打印剩下的单词减去NOT_INTERFACED.

但我收到一个错误,我的java程序正在调用此模板但是我得到一个异常结束 - 没有找到.

我做错了语法吗?

<xsl:choose>
  <xsl:when test="ends-with($ID_FO, 'NOT_INTERFACED')">
    <xsl:value-of select="substring-before($ID_FO, 'NOT_INTERFACED')"/>
  </xsl:when>
  <xsl:otherwise>
    <xsl:value-of select="$ID_FO"/>
  </xsl:otherwise>
</xsl:choose> 
Run Code Online (Sandbox Code Playgroud)

而错误是

可能无法找到功能结束.LOCATION:未知的
java.lang.NullPointerException

xslt

0
推荐指数
1
解决办法
2618
查看次数

如何培养团队成员成为Xml专家

伙计们,

我必须与一个新团队合作并为每个团队设计所需的技能,我想为他们中的一个制定一个压缩的培训计划,成为团队中的Xml专家,作为其中的一部分,我让他阅读来自W3Schools的XPath,XSLT,但他还需要知道什么?还是有更好的来源?

xml xslt xpath

0
推荐指数
1
解决办法
574
查看次数

通过XSLT删除某些XML元素

我的问题是:我有一个XML文件,我想删除一些子元素而不删除父元素.任何人都可以通过使用ASP.NET来帮助我获得结果吗?

这是我的XML文件:

<Jobs> 
  <Job>
    <Title></Title>
    <Summary</Summary>
    <DateActive>9/28/2009</DateActive>
   <DateExpires>10/28/2009</DateExpires>
   <DateUpdated>9/28/2009</DateUpdated>
    <Location>
      <Country>India</Country>
      <State>xxx</State>
      <City>xxx</City>
      <PostalCode>xxx</PostalCode>
    </Location>
    <CompanyName>Finance</CompanyName>
    <Salary>
      <Max>70,000.00</Max>
      <Type>Per Year</Type>
      <Currency>Dollar</Currency>
    </Salary>
    <BuilderFields />
    <DisplayOptions />
    <AddressType>6</AddressType>
    <Job_Id>123456</Job_Id>
  </Job>
Run Code Online (Sandbox Code Playgroud)

从上面的XML我想只删除<Location><Salary>元素,而不删除他们的子节点.我如何使用XSLT在XML文件中获得所需的结果?

.net asp.net xslt

0
推荐指数
1
解决办法
1939
查看次数

标签 统计

xslt ×10

xml ×5

.net ×2

xslt-1.0 ×2

asp.net ×1

c# ×1

decimal ×1

filter ×1

formatting ×1

loops ×1

nested ×1

xpath ×1