我在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
我正在使用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) 我需要使用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) 所以在我的一个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转换.(不是我的代码).
谢谢
如何确保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 , "015"))" />
<xsl:variable name="isSheduledDeliveryDate" select="string(userCSharp:LogicalEq($qualifier , "007"))" />
<xsl:variable name="isShipmentDate" select="string(userCSharp:LogicalEq($qualifier , "003"))" />
<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)
那么如何以"正确的顺序"输出日期呢?
<xsl:if test="(1 > 2)">
</xsl:if>
Run Code Online (Sandbox Code Playgroud)
还有什么更短的吗?尝试(false)和('false'),但没有运气.
<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 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)
我或声明有问题.
我创建了两个文件,input.xml和formatter.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模块,里面有一些部分....
<?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)