标签: xslt

XSLT或语句无法正常工作

我在xslt中遇到了这个测试的问题

<xsl:if test="(count(dsQueryResponse/Rows/Row) == 0) or (dsQueryResponse/Rows/Row[1]/@Process != '')">
    <textarea>
         ....
    </textarea>
</xsl:if>
Run Code Online (Sandbox Code Playgroud)

如果,我想允许显示textarea

  • count(dsQueryResponse/Rows/Row)== 0
  • 或者,如果第一行的Process属性为空

xslt

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

XSL中的文档功能上的XML位置在Unix/Linux服务器中不起作用

我正在使用SAS PROC XSL通过合并来自多个XML的信息来创建新的XML.为此,我使用Document()函数和()中的XML文件的路径.当我在Windows上提交代码时,此代码工作正常,但在LINUX服务器上却没有.令我惊讶的是,日志中没有错误或警告消息.我正在使用XSL处理器1.0.

使用的xsl文件的内容

<?xml version="1.0" encoding="UTF-8"?>
<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="/">
<root>
    <xsl:comment>One Argument </xsl:comment>
    <xsl:for-each select="document('/project/dev/xml_test/b.xml')//a">
        <xsl:copy-of select="."/>
    </xsl:for-each>

    <xsl:comment>Two Argument </xsl:comment>
    <xsl:for-each select="document('/project/dev/xml_test/a.xml', .)//a">
        <xsl:copy-of select="."/>
    </xsl:for-each>
</root>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

SAS代码:

filename infile "/project/dev/xml_test/b.xml" ;

filename style "/project/dev/xml_test/xslfile.xsl"; --the content is as given above

filename outfile   "/project/dev/xml_test/c.xml";



proc xsl in=infile xsl=style out=outfile;
run;
Run Code Online (Sandbox Code Playgroud)

xml xslt sas

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

XSLT:添加新元素时排除名称空间

我需要使用xalan重定向扩展名将新元素添加到现有xml文件中,但是命名空间存在问题。

my xslt : 
<xsl:stylesheet version="1.0"
    xmlns:redirect="http://xml.apache.org/xalan/redirect"
    extension-element-prefixes="redirect" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:validator="xalan://com.epam.app.transformation.Validator"
    xmlns:t="http://www.products.com" exclude-result-prefixes="#default t">
    <xsl:import href="addProductPage.xsl" />
    <xsl:param name="name"></xsl:param>
    <xsl:param name="provider"></xsl:param>
    <xsl:param name="model"></xsl:param>
    <xsl:param name="color"></xsl:param>
    <xsl:param name="dateOfIssue"></xsl:param>
    <xsl:param name="notInStock"></xsl:param>
    <xsl:param name="price"></xsl:param>
    <xsl:param name="filename"></xsl:param>
    <xsl:param name="isValid"
        select="validator:validateFields($name, $provider, $model, $dateOfIssue, $color,$price,$notInStock)" />
    <xsl:param name="categoryName"></xsl:param>
    <xsl:param name="subcategoryName"></xsl:param>

    <xsl:output omit-xml-declaration="yes" indent="no" />
    <xsl:template match="/" priority="2">
        <html>
            <head>
                <title>Products Home Page</title>
            </head>
            <body>
                <xsl:choose>
                    <xsl:when test="$isValid">
                        <redirect:write select="$filename" append="false">

                            <xsl:call-template name="saveProduct" />
                        </redirect:write>
                        <xsl:call-template name="returnToProducts" />
                    </xsl:when>
                    <xsl:otherwise>
                        <xsl:call-template name="addProduct" />
                                            <!-- i show errors …
Run Code Online (Sandbox Code Playgroud)

xml xslt xalan

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

这么多命名空间有什么意义呢

所以在我的一个xslt文件中,我看到了

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:myxsl="urn:schemas-microsoft-com:xslt"
    xmlns:xsl2="http://www.w3.org/TR/xslt20/" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:java="http://xml.apache.org/xalan/java" 
    xmlns:mine="com.my.example.impl.BaseImpl"
    xmlns:m="com.my.example.util.CustomXsltHashMap"  
    xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
    exclude-result-prefixes="myxsl java s mine m xs xsl2">
Run Code Online (Sandbox Code Playgroud)

有人能告诉我这里的每一行是什么意思吗?我真的很感激这些名称空间及其用途的逐行解释?

我在某种程度上使用Java服务中的xslt转换.(不是我的代码).

谢谢

java xml xslt xml-namespaces

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

如何确保XSLT中输出元素的顺序?

如何确保XSLT中输出元素的顺序?

我有一个在BizTalk映射中使用的XSLT,它提取三个日期Ok,但由于源数据的顺序,生成的XML是ShipmentDate,ScheduledDeliveryDate,然后是DocumentIssueDate.

<Dates>
  <xsl:for-each select="s0:E2EDT13001GRP">
    <xsl:variable name="qualifier" select="string(s0:E2EDT13001/s0:QUALF/text())" />
    <xsl:variable name="isDocumentIssueDate" select="string(userCSharp:LogicalEq($qualifier , &quot;015&quot;))" />
    <xsl:variable name="isSheduledDeliveryDate" select="string(userCSharp:LogicalEq($qualifier , &quot;007&quot;))" />
    <xsl:variable name="isShipmentDate" select="string(userCSharp:LogicalEq($qualifier , &quot;003&quot;))" />
    <xsl:variable name="date" select="s0:E2EDT13001/s0:NTANF/text()" />

    <xsl:if test="$isDocumentIssueDate='true'">
      <DocumentIssueDate>
        <xsl:value-of select="$date" />
      </DocumentIssueDate>
    </xsl:if>

    <xsl:if test="$isScheduledDeliveryDate='true'">
      <ScheduledDeliveryDate>
        <xsl:value-of select="$date" />
      </ScheduledDeliveryDate>
    </xsl:if>

    <xsl:if test="$isShipmentDate='true'">
      <ShipmentDate>
        <xsl:value-of select="$date" />
      </ShipmentDate>
    </xsl:if>

  </xsl:for-each>
</Dates>
Run Code Online (Sandbox Code Playgroud)

当我在Visual Studio中测试地图时,我得到的错误是XML对XSD无效......

<xs:complexType>
  <xs:sequence>
    <xs:element name="DocumentIssueDate" type="xs:string" />
    <xs:element name="SheduledDeliveryDate" type="xs:string" />
    <xs:element name="ShipmentDate" type="xs:string" />
  </xs:sequence>
</xs:complexType>
Run Code Online (Sandbox Code Playgroud)

那么如何以"正确的顺序"输出日期呢?

xslt biztalk biztalk-2010

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

xslt:编写始终为false的if语句的最短方法

<xsl:if test="(1 &gt; 2)">
</xsl:if>
Run Code Online (Sandbox Code Playgroud)

还有什么更短的吗?尝试(false)('false'),但没有运气.

xslt if-statement xslt-1.0

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

请为Table rowspan和colspan问题建议XSLT代码

<article>

<table id="tbl1">
<caption><p>Table 1. Sample Table</p></caption>

<thead>
<tr>
    <td colspan="3">I</td>
    <td colspan="4">II</td>
</tr>

<tr>
    <td>Sl. No.</td>
    <td>Name</td>
    <td>Place</td>
    <td>Subject 1</td>
    <td>Subject 2</td>
    <td>Subject 3</td>
    <td>Grade</td>
</tr>
</thead>

<tbody>
<tr>
    <td rowspan="3">1</td>
    <td colspan="2">Kishan</td>
    <td>95</td>
    <td>96</td>
    <td rowspan="2">97</td>
    <td>A</td>
</tr>

<tr>

    <td>Kishan</td>
    <td>Bangalore</td>
    <td>94</td>
    <td>96</td>

    <td>A</td>
</tr>

<tr>

    <td>Likhith</td>
    <td>Bhadravathi</td>
    <td>94</td>
    <td>94</td>
    <td>99</td>
    <td>A</td>
</tr>
</tbody>
</table>

</article>
Run Code Online (Sandbox Code Playgroud)

必需OutPut:如果colspan是2在第二个单元格中编码,则第三个不应该在那里,下一个单元格名称应为"colname ="3"(起始索引为0).对于rowspan,如果存在行的第一个单元格具有rowspan = "3",然后接下来的两行不应该有colname ="0",那些接下来的两行起始单元格将具有名称="1"(起始索引为0,这就是为什么1表示第二个单元格).请建议使用XSLT编码二解决了同一表中存在的rowspan和colspan.

    <article>

<table id="tbl1">
<caption><p>Table 1. Sample Table</p></caption>

<thead>
<tr>
    <td colname="0:0">I</td>
    <td colname="0:3">II</td>
</tr>

<tr>
    <td colname="1:0">Sl. …
Run Code Online (Sandbox Code Playgroud)

xslt

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

XSLT if Last节点

这是我的XSLT 1.0代码:

<xsl:for-each select = "segment">
    <xsl:if test ="position() != 1 or position() != last()">
      <notfirstorlast></notfirstorlast>    
     </xsl:if> 
</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)

这应该添加一个<notfirstorlast>元素,在所有<segment>节点中为第一个和最后一个节点exepct.但它不起作用.它将在没有或声明的情况下工作.这个作品:

<xsl:if test ="position() != 1>
Run Code Online (Sandbox Code Playgroud)

我或声明有问题.

xml xslt xslt-1.0

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

为什么//*[1]与(//*)[1]不同

我创建了两个文件,input.xmlformatter.xslt.

input.xml中:

<?xml-stylesheet type="text/xsl" href="formatter.xslt"?>
<div><span>1</span><span>2</span></div>
Run Code Online (Sandbox Code Playgroud)

formatter.xslt:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <html><head></head><body>
            <xsl:copy-of select="//*[1]"/>
            ,
            <xsl:copy-of select="(//*)[1]"/>
        </body></html>
    </xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

然后我input.xml在Internet Explorer中打开,然后按下F12.我看到DOM树是这样的:

<html><head></head><body>
    <div><span>1</span><span>2</span></div><span>1</span>
    ,
    <div><span>1</span><span>2</span></div>
</body></html>
Run Code Online (Sandbox Code Playgroud)

为什么//*[1](//*)[1]复制不同的元素到输出文件?

xml xslt xpath xquery

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

XSLT 1.0组和计数节点

我有XML模块,里面有一些部分....

<?xml version="1.0"?>
<root>
 <modul id="1">
    <part id="01" part_number="AAA"/>
    <part id="02" part_number="AAA"/>
    <part id="03" part_number="AAA"/>
    <part id="04" part_number="BBB"/>
 </modul>
 <modul id="2">
    <part id="05" part_number="AAA"/>
    <part id="06" part_number="AAA"/>
    <part id="07" part_number="CCC"/>
    <part id="08" part_number="BBB"/>
 </modul>
</root>
Run Code Online (Sandbox Code Playgroud)

我想在每个模块中按part_number分组并计算节点的出现次数:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="keyPartNumber" match="part" use="@part_number"/>
<xsl:template match="/">
<xsl:for-each select="root/modul">
<modul name="{@id}">
<xsl:for-each select="part[generate-id() = generate-id(key('keyPartNumber',@part_number)[1])]">
  <xsl:sort select="@part_number" order="ascending" data-type="text"/>                        
  <node title="{@part_number} (quantity: {count(key('keyPartNumber',@part_number))})" />
  </xsl:for-each>
</modul>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

但结果我得到的不是我想要的:

<?xml version="1.0" encoding="UTF-8"?>
<modul name="1">
  <node title="AAA (quantity: 5)"/>
  <node title="BBB (quantity: …
Run Code Online (Sandbox Code Playgroud)

xml xslt

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

标签 统计

xslt ×10

xml ×6

xslt-1.0 ×2

biztalk ×1

biztalk-2010 ×1

if-statement ×1

java ×1

sas ×1

xalan ×1

xml-namespaces ×1

xpath ×1

xquery ×1