小编Emi*_*ggi的帖子

7
推荐指数
1
解决办法
5675
查看次数

XSLT转换为HTML并基于XML中的数据格式化HTML

我是XSLT/XML和HTML的新手.我有一个XML文件,我目前使用XSLT在c#中转换为HTML.XML文件只代表从数据库中的表中提取的数据.我现在可以非常轻松地使用XSLT将XML文件转换为HTML,而无需太多格式化.打开时的HTML看起来很普通.我打算格式化HTML,即根据XML文档中的某些键值更改字体,背景颜色,字体颜色等.

XML是使用C#代码每天生成的.XML文件的内容完全取决于执行C#代码的那一天中数据库中表的内容.

XML看起来像这样

<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <defects>
    <Defectid>56</Defectid>
    <testid>111</testid>
    <summary>Release of DIT </summary>
    <DetectedDate>2011-09-21 </DetectedDate>
    <priority>2-Give High Attention</priority>
    <status>Ready to Test</status>
    <project>Business Intelligence</project>
    <assignedTo>peter</assignedTo>
    <detectedBy>john</detectedBy>
    <severity>3-Average</severity>
  </defects>
  <defects>
    <Defectid>829</Defectid>
    <testid>111</testid>
    <summary> Data request</summary>
    <DetectedDate>2012-01-12 </DetectedDate>
    <priority>3-Normal Queue</priority>
    <status>Open</status>
    <project>web</project>
    <assignedTo>tcm</assignedTo>
    <detectedBy>john</detectedBy>
    <severity>3-Average</severity>
  </defects>
  <defects>
    <Defectid>728</Defectid>
    <testid>999</testid>
    <summary>Data request</summary>
    <DetectedDate>2012-01-11</DetectedDate>
    <priority>3-Normal Queue</priority>
    <status>Fixed</status>
    <project>Business Intelligence</project>
    <assignedTo>chris</assignedTo>
    <detectedBy>peter</detectedBy>
    <severity>3-Average</severity>
  </defects>
</NewDataSet>
Run Code Online (Sandbox Code Playgroud)

我打算做的是从这个XML生成HTML表格,它是表格格式,但HTML表格中行的字体颜色应该根据"testid"属性设置.即,对于HTML上的字体颜色,每个"testid"属性应该是唯一的.由于每个testid的行每天都会根据数据库中表中的数据进行更改,因此我不确定如何使用XSLT完成此操作.

当前的XSLT看起来像这样..正如你所看到的,我已经硬编码了字体颜色.

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html"/>
  <xsl:template match="/">
    <table  BORDER="1" CELLPADDING="3" CELLSPACING="2" WIDTH="100">
      <tr>
        <td …
Run Code Online (Sandbox Code Playgroud)

.net html c# xml xslt

7
推荐指数
1
解决办法
3613
查看次数

Powershell专家,请澄清函数中的变量范围

我读到当函数脚本是dot-sourced时,函数范围内的变量可以在当前作用域中访问.

这是真的吗?这很奇怪,我认为不寻常......

我可以澄清一下这个原因.例如,my-f设置$my-f-var为某个整数,假设为2:

PS1> . .\my-f-script.ps1
PS1> my-f
PS1> $my-f-var
2
Run Code Online (Sandbox Code Playgroud)

我希望这$my-f-var是无法访问的,因为在函数内部!有没有办法让变量变为私有,或者在没有点源脚本的情况下调用函数的方法?

powershell scope

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

有人在Powershell中使用BDD吗?

我在stackoverflow找到了很多围绕这个问题的线程.他们现在已经2岁了.所以我想知道是否有人使用scottmuc函数在PowerShell中执行BDD.乍一看似乎非常强大.

你有什么看法?有人知道其他一些有效的BDD框架吗?我想要一些非常接近rspec的东西.

注意我需要BDD而不是TDD(PSUnit)建议/指示.


在powershell上没有多少人使用BDD,看到答案:).这是否意味着BDD完全没用,只是因为PowerShell只是脚本编写?我认为这不是一个正当理由.

无论如何这里的列表到目前为止:

  • Pester,更接近像rspec这样的东西
  • PowerSpec,似乎只是少数几个should

bdd powershell pester

6
推荐指数
1
解决办法
1077
查看次数

如何在运行时动态创建实例方法?

[红宝石1.8]

假设我有:

dummy "string" do
    puts "thing" 
end
Run Code Online (Sandbox Code Playgroud)

现在,这是对一个方法的调用,该方法具有一个字符串和一个块作为输入参数.尼斯.

现在假设我可以有很多类似的调用(不同的方法名称,相同的参数).例:

otherdummy "string" do
    puts "thing"
end
Run Code Online (Sandbox Code Playgroud)

现在因为他们做了同样的事情,而且他们可以成百上千,我不想为想要的类中的每一个创建一个实例方法.我想找到一种基于一般规则在运行时动态定义方法的智能方法.

那可能吗?通常使用哪种技术?

谢谢

ruby metaprogramming ruby-1.8

6
推荐指数
2
解决办法
7835
查看次数

什么XSLT指令改变当前节点而不是for-each?

我有这个输入:

<school>
    <faculty>
        <area>
            <name>F1A1</name>
        </area>
        <area>
            <name>F1A2</name>
        </area>
        <area>
            <name>F1A3</name>
        </area>
    </faculty>
    <faculty>
        <area>
            <name>F2A1</name>
        </area>
        <area>
            <name>F2A2</name>
        </area>
        <area>
            <name>F2A3</name>
        </area>
    </faculty>
    <faculty>
        <area>
            <name>F3A1</name>
        </area>
        <area>
            <name>F3A2</name>
        </area>
        <area>
            <name>F3A3</name>
        </area>
    </faculty>
</school>
Run Code Online (Sandbox Code Playgroud)

我想得到这个输出(括号中的数字是字符串长度):

F1A1 (4)
F1A2 (4)
F1A3 (4)
F2A1 (4)
F2A2 (4)
F2A3 (4)
F3A1 (4)
F3A2 (4)
F3A3 (4)
Run Code Online (Sandbox Code Playgroud)

以下是要求:

A.初始匹配必须是<xsl:template match="/">.

B.模板T1定义如下:

<xsl:template name="T1">

   <xsl:value-of select="concat(.,' (',string-length(.),')&#10;')"/>

</xsl:template>
Run Code Online (Sandbox Code Playgroud)

该脚本需要call-template T1生成所需的输出,并且不得以任何方式更改T1.

C.必须不依赖XSLT中的默认内置模板规则.

这是我的解决方案(看起来很奇怪):

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output …
Run Code Online (Sandbox Code Playgroud)

xml xslt xslt-2.0 xslt-1.0

6
推荐指数
1
解决办法
4130
查看次数

如何计算具有相同属性值的元素

我敢肯定这是一个简单的,但我只是不看树木.

我有一个看起来像这样的XML:

   <root>
    <profil>
        <e1 a="2">1</e1>
        <m1 a="3">1</m1>
        <e2 a="4">1</e2>
        <m2 a="5">1</m2>
    </profil>
    <profil>
        <e1 a="5">1</e1>
        <m1 a="3">1</m1>
        <e2 a="4">1</e2>
        <m2 a="4">1</m2>
    </profil>
    <profil>
        <e1 a="7">1</e1>
        <m1 a="7">1</m1>
        <e2 a="4">1</e2>
        <m2 a="2">1</m2>
    </profil>
</root>
Run Code Online (Sandbox Code Playgroud)

现在我想知道有多少/ m*/@ a等于e*/@ a per/profil.所以我提出了以下XSLT:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    <xsl:template match="*">
        <xsl:element name="root">
            <xsl:for-each select="/root/profil">
                <xsl:element name="count">
                    <xsl:value-of select="count(*[contains(name(), 'm') and ./@a = //*[contains(name(),'e')]/@a])"/>
                </xsl:element>
            </xsl:for-each>
        </xsl:element>
    </xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

但结果是错误的:

<root>
    <count>1</count>
    <count>1</count>
    <count>2</count>
</root>
Run Code Online (Sandbox Code Playgroud)

它应该是

<root>
    <count>0</count>
    <count>1</count>
    <count>1</count>
</root>
Run Code Online (Sandbox Code Playgroud)

有谁有人建议我做错了什么?

xml xslt xpath

5
推荐指数
1
解决办法
2126
查看次数

如何根据节点属性动态更改xslt页面序列?

我遇到的问题的淡化版本就是这个.对于XML文件,例如:

<?xml version="1.0" encoding="UTF-8"?>
<items>
    <item cols="1">Item 1</item>
    <item cols="1">Item 2</item>
    <item cols="1">Item 3</item>
    <item cols="1">Item 4</item>
    <item cols="1">Item 5</item>
    <item cols="1">Item 6</item>
    <item cols="1">Item 7</item>
    <item cols="1">Item 8</item>
    <item cols="1">Item 9</item>
    <item cols="2">Item 10</item>
    <item cols="1">Item 11</item>
    <item cols="1">Item 12</item>
    <item cols="1">Item 13</item>
    <item cols="1">Item 14</item>
    <item cols="1">Item 15</item>
    <item cols="1">Item 16</item>
    <item cols="1">Item 17</item>
    <item cols="1">Item 18</item>
</items>
Run Code Online (Sandbox Code Playgroud)

我需要能够在单个列页面布局中打印'具有'cols = 1'的项目,以及在双列页面布局中打印'cols = 2'的项目.必须保留物品的顺序.具有相同@cols值的所有连续'项目需要显示为连续流.每次@cols值改变时,我都需要打破一个新页面并根据需要更改布局.

我正在做这样的事情:

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

    <xsl:strip-space elements="*"/>

    <xsl:template match="/">
        <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
            <fo:layout-master-set>

                <fo:simple-page-master master-name="one-column-page-master">
                    <fo:region-body …
Run Code Online (Sandbox Code Playgroud)

xml xslt xsl-fo apache-fop

5
推荐指数
1
解决办法
5502
查看次数

需要XSL文件将内部xml测试格式转换为Junit格式(jenkins的xUnit插件)

我正在尝试编写一个XSL来将我的XML转换为JUNIT格式的jenkins(见下文)

我的xml看起来像这样:(我有几个"类",如"数据中心"或"网络")

<tests>
   <Datacenters>             
        <test_name>Create NFS Data Center</test_name>
    <end_time>2011-06-13 01:22:55</end_time>
    <iter_num>1</iter_num>
    <start_time>2011-06-13 01:22:52</start_time>
    <status>Pass</status>
   </Datacenters>
   <Datacenters>             
    <test_name>Create NFS Data Center</test_name>
    <end_time>2011-06-13 01:22:55</end_time>
    <iter_num>1</iter_num>
    <start_time>2011-06-13 01:22:52</start_time>
    <status>Pass</status>
   </Datacenters>
   <Network>             
    <test_name>Network test 1</test_name>
    <end_time>2011-06-13 01:22:57</end_time>
    <iter_num>1</iter_num>
    <start_time>2011-06-13 01:22:52</start_time>
    <status>Pass</status>
   </Network>
   .....
 </tests>
Run Code Online (Sandbox Code Playgroud)

我从WebUI插件中获取了一个XSL并试图改变它,我已经到了一半,但它仍然很棘手.这是我到目前为止所做的:

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions">

    <xsl:output method="xml" indent="yes" />    
    <xsl:template match="/">
    <testsuites>        

     <! -- need to change /Datacenters to something else so it will work on all nodes -->
      <xsl:variable name="buildName" select="//tests/Datacenters/test_name"/>   
      <xsl:variable name="numOfTests" select="count(//tests/Datacenters/iter_num)"/> …
Run Code Online (Sandbox Code Playgroud)

xml xslt junit jenkins

4
推荐指数
1
解决办法
3901
查看次数

XSLT匹配空节点

我有一个像以下XML结构:

<Root>
  <!-- ...other stuff -->
  <Events>
    <Event date="0000-00-00">Event Description etc...</Event>
    <Event date="0000-00-00">Event Description etc...</Event>
    <Event date="0000-00-00">Event Description etc...</Event>
  </Events>
  <!-- ...other stuff -->
</Root>
Run Code Online (Sandbox Code Playgroud)

然后我在样式表中有XSLT,如下所示:

<xsl:variable name="Events" select="/Root/Events/Event" />

<xsl:template match="/">
  <!-- Stuff -->    
  <xsl:apply-templates select="$Events" />
  <!-- Stuff -->    
</xsl:template>

<xsl:template match="Event">
  <!-- Regular Event Template Transformation here -->
</xsl:template>    

<!-- ERROR HAPPENS HERE -->
<xsl:template match="not(node())">
  <p class="message">There are currently no upcoming events</p>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

我想要做的是有两个模板,一个仅在没有事件时显示.我知道我可以使用XSLT <xsl:choose>和<xsl:when>测试来进行元素计数,只需调用正确的模板就像在过程语言中那样,但我正在尝试学习如何使用模板处理.

我得到的错误是: 表达式的预期结束,找到'('.not - >(< - node())

xml xslt xsl-stylesheet

4
推荐指数
1
解决办法
7768
查看次数