xslt 相关问题

XSLT是XML的一种转换语言,旨在将结构化文档转换为其他格式(如XML,HTML和纯文本,或者在XSLT 3,JSON中)。问题应该根据需要使用xslt-1.0,xslt-2.0或xslt-3.0标记之一。

如何在xslt中使用具有两个匹配条件的键?

我正在尝试匹配具有相似 ID 且具有其他两个不同属性的对象。 我的 XML 文件具有以下结构: 我正在尝试匹配具有相似 ID 且具有其他两个不同属性的对象。 我的 XML 文件具有以下结构: <array> <object> <property name="AttributeValue"> <literal type="string">1</literal> </property> <property name="AttributeName"> <literal type="string">Is_Active</literal> </property> <property name="RecordId"> <literal type="string">1</literal> </property> </object> <object> <property name="AttributeValue"> <literal type="string">Retail</literal> </property> <property name="AttributeName"> <literal type="string">Label</literal> </property> <property name="RecordId"> <literal type="string">1</literal> </property> </object> <object> <property name="AttributeValue"> <literal type="string">1</literal> </property> <property name="AttributeName"> <literal type="string">MBRSH</literal> </property> <property name="RecordId"> <literal type="string">1</literal> </property> </object> ... </array> 我正在尝试匹配具有相同 RecordId 的所有对象 <xsl:key name="value" match="array/object/property[@name='RecordId']/literal[text()] | array/object/property[@name='AttributeName']/literal[text()]" use="array/object/property[@name='AttributeValue']/literal[text()]" /> <xsl:template match="array"> <xsl:variable name="RecordId" select="./object/property[@name='RecordId']/literal[text()]"/> <xsl:for-each select="$RecordId"> <xsl:variable name="MBRSH" select="key('value', current() | 'MBRSH')" /> .... </xsl:for-each> </xsl:template> 我只是想找到一个有效的组合!请向我提供您的见解。 您可以使用 XPath 查找具有相同 RecordId 的所有对象。实现此目的的 XPath 表达式为: /array/object[property[@name='RecordId']/literal[@type='string' and text()='1']]

回答 1 投票 0

更新属性值

给定这样的输入 给定这样的输入 <div> <p> <x n="1"/> <x n=""/> <x n=""/> <x n=""/> <x n="190"/> <x n=""/> <x n=""/> </p> </div> 我需要从现有值增量更新属性 n 的空值才能实现此结果: <div> <p> <x n="1"/> <x n="2"/> <x n="3"/> <x n="4"/> <x n="190"/> <x n="191"/> <x n="192"/> </p> </div> 我尝试过这个解决方案: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:template match="@* | node()"> <xsl:copy> <xsl:apply-templates select="@* | node()"/> </xsl:copy> </xsl:template> <xsl:template match="x[@n = '']/@n"> <xsl:attribute name="n" select="preceding::x[number(@n)]/@n + 1"/> </xsl:template> </xsl:stylesheet> -- 只产生: <div> <p> <x n="1"/> <x n="2"/> <x n=""/> <x n=""/> <x n="190"/> <x n=""/> <x n=""/> </p> </div> 使用 XSLT 3 和 xsl:iterate: <xsl:mode on-no-match="shallow-copy"/> <xsl:template match="p"> <xsl:copy> <xsl:iterate select="x"> <xsl:param name="n" select="()"/> <xsl:variable name="n" select="if (@n and @n != '') then @n else $n + 1"/> <xsl:copy> <xsl:attribute name="n" select="$n"/> </xsl:copy> <xsl:next-iteration> <xsl:with-param name="n" select="$n"/> </xsl:next-iteration> </xsl:iterate> </xsl:copy> </xsl:template> 在线示例.

回答 1 投票 0

XSL - 如何将第一个字母大写

我有以下xml。 约翰 史密斯 我想将第一个字母大写并输出以下格式。 我有以下 xml。 <Name> <First>john</First> <Last>smith</Last> </Name> 我想将第一个字母大写并输出以下格式。 <FullName>John Smith</FullName> 提前谢谢您。 我。 XSLT 2.0 解决方案: <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output omit-xml-declaration="yes" indent="yes"/> <xsl:strip-space elements="*"/> <xsl:template match="/*"> <FullName><xsl:apply-templates/></FullName> </xsl:template> <xsl:template match="First|Last"> <xsl:sequence select= "concat(upper-case(substring(.,1,1)), substring(., 2), ' '[not(last())] ) "/> </xsl:template> </xsl:stylesheet> 当此转换应用于提供的 XML 文档时: <Name> <First>john</First> <Last>smith</Last> </Name> 产生了想要的正确结果: <FullName>John Smith</FullName> 二. XSLT 1.0 解决方案: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output omit-xml-declaration="yes" indent="yes"/> <xsl:strip-space elements="*"/> <xsl:variable name="vLower" select= "'abcdefghijklmnopqrstuvwxyz'"/> <xsl:variable name="vUpper" select= "'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/> <xsl:template match="/*"> <FullName><xsl:apply-templates/></FullName> </xsl:template> <xsl:template match="First|Last"> <xsl:value-of select= "concat(translate(substring(.,1,1), $vLower, $vUpper), substring(., 2), substring(' ', 1 div not(position()=last())) ) "/> </xsl:template> </xsl:stylesheet> 尝试: concat( translate( substring($Name, 1, 1), 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' ), substring($Name,2,string-length($Name)-1) ) 连接( 大写(子字符串($Name,1,1)), 子字符串($Name,2,字符串长度($Name)) )

回答 3 投票 0

是否有一个函数可以使用xslt3.0获取数据的随机顺序而不是seq顺序

需要以随机顺序获取数据,而不是按顺序输入。 下面是xml源码: 需要以随机顺序获取数据,而不是按顺序输入。 下面是xml源码: <?xml version='1.0' encoding='UTF-8'?> <wd:Report_Data xmlns:wd="urn:com.workday/bsvc"> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>1</wd:questionno> <wd:response>&lt;p>PS 1 Q1&lt;/p></wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>2</wd:questionno> <wd:response>&lt;p>PS 1 Q2&lt;/p></wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>3</wd:questionno> <wd:response>9</wd:response> <wd:date>2023-12-01</wd:date> <wd:score>9</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>4</wd:questionno> <wd:response>10</wd:response> <wd:date>2023-12-01</wd:date> <wd:score>10</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>1</wd:questionno> <wd:response>&lt;p>PS 1 Q1&lt;/p></wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>2</wd:questionno> <wd:response>&lt;p>PS 2 Q1&lt;/p></wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>3</wd:questionno> <wd:response>5</wd:response> <wd:date>2023-12-01</wd:date> <wd:score>5</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>4</wd:questionno> <wd:response>7</wd:response> <wd:date>2023-12-01</wd:date> <wd:score>7</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>1</wd:questionno> <wd:response>&lt;p>PS 2 Q1&lt;/p></wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>2</wd:questionno> <wd:response>&lt;p>PS 2 Q2&lt;/p></wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>3</wd:questionno> <wd:response>7</wd:response> <wd:date>2023-12-01</wd:date> <wd:score>7</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>4</wd:questionno> <wd:response>10</wd:response> <wd:date>2023-12-01</wd:date> <wd:score>10</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Direct Report</wd:category> <wd:questionno>1</wd:questionno> <wd:response>&lt;p>DR 1 Q1&lt;/p></wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Direct Report</wd:category> <wd:questionno>2</wd:questionno> <wd:response>&lt;p>DR 1 Q2&lt;/p></wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Direct Report</wd:category> <wd:questionno>3</wd:questionno> <wd:response>8</wd:response> <wd:date>2023-12-01</wd:date> <wd:score>8</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Direct Report</wd:category> <wd:questionno>4</wd:questionno> <wd:response>6</wd:response> <wd:date>2023-12-01</wd:date> <wd:score>6</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>1</wd:questionno> <wd:response>&lt;p>PS 2 Q1&lt;/p></wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>2</wd:questionno> <wd:response>&lt;p>PS 2 Q2&lt;/p></wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>3</wd:questionno> <wd:response>6</wd:response> <wd:date>2023-12-01</wd:date> <wd:score>6</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>4</wd:questionno> <wd:response>7</wd:response> <wd:date>2023-12-01</wd:date> <wd:score>7</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>1</wd:questionno> <wd:response>&lt;p>PS 3 Q1&lt;/p></wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>2</wd:questionno> <wd:response>&lt;p>PS 3 Q2&lt;/p></wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>3</wd:questionno> <wd:response>Not enough information</wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>4</wd:questionno> <wd:response>8</wd:response> <wd:date>2023-12-01</wd:date> <wd:score>8</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Direct Report</wd:category> <wd:questionno>1</wd:questionno> <wd:response>&lt;p>DR2 Q1&lt;/p></wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Direct Report</wd:category> <wd:questionno>2</wd:questionno> <wd:response>&lt;p>DR2 Q2&lt;/p></wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Direct Report</wd:category> <wd:questionno>3</wd:questionno> <wd:response>6</wd:response> <wd:date>2023-12-01</wd:date> <wd:score>6</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Direct Report</wd:category> <wd:questionno>4</wd:questionno> <wd:response>6</wd:response> <wd:date>2023-12-01</wd:date> <wd:score>6</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Direct Report</wd:category> <wd:questionno>1</wd:questionno> <wd:response>&lt;p>DR3 Q1&lt;/p></wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Direct Report</wd:category> <wd:questionno>2</wd:questionno> <wd:response>&lt;p>DR3 Q2&lt;/p></wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Direct Report</wd:category> <wd:questionno>3</wd:questionno> <wd:response>Not enough information</wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Direct Report</wd:category> <wd:questionno>4</wd:questionno> <wd:response>10</wd:response> <wd:date>2023-12-01</wd:date> <wd:score>10</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Manager</wd:category> <wd:questionno>1</wd:questionno> <wd:response>&lt;p>M response Q1&lt;/p></wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Manager</wd:category> <wd:questionno>2</wd:questionno> <wd:response>&lt;p>M response Q2&lt;/p></wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Manager</wd:category> <wd:questionno>3</wd:questionno> <wd:response>7</wd:response> <wd:date>2023-12-01</wd:date> <wd:score>7</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Manager</wd:category> <wd:questionno>4</wd:questionno> <wd:response>6</wd:response> <wd:date>2023-12-01</wd:date> <wd:score>6</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>1</wd:questionno> <wd:response>&lt;p>PS 3 Q1&lt;/p></wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>2</wd:questionno> <wd:response>&lt;p>PS 3 Q2&lt;/p></wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>3</wd:questionno> <wd:response>8</wd:response> <wd:date>2023-12-01</wd:date> <wd:score>8</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>4</wd:questionno> <wd:response>7</wd:response> <wd:date>2023-12-01</wd:date> <wd:score>7</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Direct Report</wd:category> <wd:questionno>1</wd:questionno> <wd:response>&lt;p>DR4 Q1&lt;/p></wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Direct Report</wd:category> <wd:questionno>2</wd:questionno> <wd:response>&lt;p>DR4 Q2&lt;/p></wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Direct Report</wd:category> <wd:questionno>3</wd:questionno> <wd:response>8</wd:response> <wd:date>2023-12-01</wd:date> <wd:score>8</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Direct Report</wd:category> <wd:questionno>4</wd:questionno> <wd:response>4</wd:response> <wd:date>2023-12-01</wd:date> <wd:score>4</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>1</wd:questionno> <wd:response>&lt;p>PS 4 Q1&lt;/p></wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>2</wd:questionno> <wd:response>&lt;p>PS 4 Q2&lt;/p></wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>3</wd:questionno> <wd:response>7</wd:response> <wd:date>2023-12-01</wd:date> <wd:score>7</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>4</wd:questionno> <wd:response>8</wd:response> <wd:date>2023-12-01</wd:date> <wd:score>8</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:category>Manager</wd:category> <wd:questionno>1</wd:questionno> <wd:response>&lt;p>M response Q1&lt;/p></wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:category>Manager</wd:category> <wd:questionno>2</wd:questionno> <wd:response>&lt;p>M response Q2&lt;/p></wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:category>Manager</wd:category> <wd:questionno>3</wd:questionno> <wd:response>6</wd:response> <wd:date>2023-12-01</wd:date> <wd:score>6</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:category>Manager</wd:category> <wd:questionno>4</wd:questionno> <wd:response>4</wd:response> <wd:date>2023-12-01</wd:date> <wd:score>4</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Direct Report</wd:category> <wd:questionno>1</wd:questionno> <wd:response>&lt;p>DR5 Q1&lt;/p></wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Direct Report</wd:category> <wd:questionno>2</wd:questionno> <wd:response>&lt;p>DR5 Q2&lt;/p></wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Direct Report</wd:category> <wd:questionno>3</wd:questionno> <wd:response>6</wd:response> <wd:date>2023-12-01</wd:date> <wd:score>6</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>456</wd:empid> <wd:category>Direct Report</wd:category> <wd:questionno>4</wd:questionno> <wd:response>7</wd:response> <wd:date>2023-12-01</wd:date> <wd:score>7</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:category>Direct Report</wd:category> <wd:questionno>1</wd:questionno> <wd:response>&lt;p>DR1 Q1&lt;/p></wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:category>Direct Report</wd:category> <wd:questionno>2</wd:questionno> <wd:response>&lt;p>DR1 Q2&lt;/p></wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:category>Direct Report</wd:category> <wd:questionno>3</wd:questionno> <wd:response>Not enough information</wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:category>Direct Report</wd:category> <wd:questionno>4</wd:questionno> <wd:response>6</wd:response> <wd:date>2023-12-01</wd:date> <wd:score>6</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:category>Direct Report</wd:category> <wd:questionno>1</wd:questionno> <wd:response>&lt;p>DR2 Q1&lt;/p></wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:category>Direct Report</wd:category> <wd:questionno>2</wd:questionno> <wd:response>&lt;p>DR2 Q2&lt;/p></wd:response> <wd:date>2023-12-01</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:category>Direct Report</wd:category> <wd:questionno>3</wd:questionno> <wd:response>9</wd:response> <wd:date>2023-12-01</wd:date> <wd:score>9</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:category>Direct Report</wd:category> <wd:questionno>4</wd:questionno> <wd:response>10</wd:response> <wd:date>2023-12-01</wd:date> <wd:score>10</wd:score> </wd:Report_Entry> </wd:Report_Data> 这是我正在使用的 xslt 3.0,但需要任意随机顺序的数据(但顺序不同): <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:map="http://www.w3.org/2005/xpath-functions/map" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wd="urn:com.workday/bsvc" exclude-result-prefixes="xs" version="3.0"> <xsl:template match="/"> <Report_Data> <xsl:apply-templates select="wd:Report_Data"/> </Report_Data> </xsl:template> <xsl:function name="wd:formatPSQ"> <xsl:param name="psqValue"/> <xsl:param name="lastElement"/> <xsl:value-of select="concat('{\&quot;Response\&quot;:{\&quot;', $psqValue, '\&quot;}')"/> <xsl:if test="$lastElement = false()"> <xsl:value-of select="','"/> </xsl:if> </xsl:function> <xsl:template match="wd:Report_Data"> <xsl:for-each-group select="wd:Report_Entry" group-by="wd:empid"> <Report_Entry> <empid> <xsl:value-of select="wd:empid"/> </empid> <DRPSQ1> <xsl:if test="(current-group()[(wd:category ='Peer/Stakeholder' or wd:category = 'Direct Report') and wd:questionno='1']/wd:response)"> <xsl:text>[</xsl:text> <xsl:for-each select="current-group()[(wd:category ='Peer/Stakeholder' or wd:category = 'Direct Report') and wd:questionno='1']"> <xsl:text>{\"Response\":\"</xsl:text> <xsl:value-of select="parse-xml-fragment(wd:response)/p"/> <xsl:text>\"}</xsl:text> <xsl:if test="position() != last()">,</xsl:if> </xsl:for-each> <xsl:text>]</xsl:text> </xsl:if> </DRPSQ1> </Report_Entry> </xsl:for-each-group> </xsl:template> </xsl:stylesheet> 我需要与 DRPSQ1 类似的输出(顺序不同,但需要随机化: 预期结果: <?xml version="1.0" encoding="UTF-8"?> <Report_Data xmlns:map="http://www.w3.org/2005/xpath-functions/map" xmlns:wd="urn:com.workday/bsvc"> <Report_Entry> <empid>123</empid> <DRPSQ1>[{\"Response\":\"PS 2 Q1\"},{\"Response\":\"PS 3 Q1\"},{\"Response\":\"PS 1 Q1\"},{\"Response\":\"DR2 Q1\"},{\"Response\":\"DR1 Q1\"}]</DRPSQ1> </Report_Entry> <Report_Entry> <empid>456</empid> <DRPSQ1>[{\"Response\":\"PS 3 Q1\"},{\"Response\":\"DR4 Q1\"},{\"Response\":\"PS 1 Q1\"},{\"Response\":\"DR5 Q1\"},{\"Response\":\"PS 2 Q1\"},{\"Response\":\"DR2 Q1\"},{\"Response\":\"DR3 Q1\"},{\"Response\":\"PS 4 Q1\"},{\"Response\":\"DR 1 Q1\"}]</DRPSQ1> </Report_Entry> </Report_Data> 尝试 <xsl:for-each-group select="random-number-generator()?permute(wd:Report_Entry)" group-by="wd:empid">

回答 1 投票 0

如何使用 xpath 在样式表 3.0 中的 xslt 中声明和使用动态数组 https://www.w3.org/TR/xpath-functions-31/#func-array-put

我有一个功能如下 ' ` 我有一个功能如下 ' `<xsl:function name="type:iterateICinDef"> <xsl:param name="pElem" as="element()"/> <xsl:param name="parentSpc"/> <xsl:param name="sequence" as="xs:integer"/> <xsl:param name="cardinality"/> <xsl:param name="required"/> <xsl:param name="refNameSpc"/> <xsl:param name="type"/> <xsl:param name="flag" as="xs:integer"/> <xsl:param name="hierParent"/> <xsl:variable name="refName" select="replace($refNameSpc,'_spc',' ')"/> <xsl:variable name="parent" select="replace($parentSpc,'_spc',' ')"/> <xsl:if test="not ($pElem/_u0024ref or $pElem/items/_u0024ref)"> <Repository_spcIC> <xsl:attribute name="Name"> <xsl:value-of select="$refName"></xsl:value-of> </xsl:attribute> </Repository_spcIC> </xsl:if> </xsl:function>` 在上面的“名称应该是唯一的,并且不应该与另一个Repository_spcIC重复,因此我想通过形成一个名称数组并在数组中查找该名称是否已经存在来避免重复,如果它确实存在,那么我需要在名称中添加后缀“__D1”以确保名称唯一。如果同名重复两次以上,则序列号将递增以使其唯一,如“__D2”、“__D3”等.如果名称是唯一的,那么我需要将该名称添加到数组中,以便下次调用该函数时将查找该数组以了解该名称是否已存在,从而决定是否为该名称添加后缀 上面的函数是从另一个函数调用的,如下所示 `<xsl:for-each select="/*/definitions/element()"> <!-- what this loop does is goes one level up, which is definitions and then iterate thru all nodes under it i.e each object to match def1 or def2 got earlier--> <xsl:if test="name(.)=$def1 or name(.)=$def2"> <xsl:variable name="cardinality"> <xsl:if test="required"> <xsl:for-each select="required"> <countNo> <xsl:if test="(position() &gt; 1)"> <xsl:text>,</xsl:text> </xsl:if> </countNo> <xsl:value-of select="text()"/> </xsl:for-each> </xsl:if> </xsl:variable> <xsl:sequence select="type:iterateICinDef((.),if($flag=1) then $refName else if($pElem/comments) then $pElem/comments /text() else $pElem/name(.),$sequence + 1, if($type='array') then 'Zero or More' else 'Zero or One',$cardinality,$referredName, $type,1,$refName)"/> </xsl:if> </xsl:for-each>` 数组与 XDM 数据模型中的其他所有内容一样,是不可变的。这意味着您永远无法“原位”更改现有数组,只能通过更改现有数组来创建新数组。 您已经用过程伪代码表达了您的需求,而 XSLT 不是一种过程语言,因此很难对您的代码进行逆向工程以找出真正的需求是什么。通过描述流程的输入和输出来解释您的需求要好得多,而不是作为从一个到另一个的一系列操作。 您问题中的“一次一个”这句话敲响了警钟。在像 XSLT 这样的声明性函数式语言中,没有时间概念,也没有事情相继发生的概念。 也不清楚这里是否需要 XDM 阵列。我怀疑 XDM 序列会更容易使用。数组是该语言的 3.0 附加组件(主要是为了支持 JSON),而序列自 2.0 以来就已经存在,并且更深入地集成到处理模型中。例如,XSLT 的 xsl:for-each 指令可用于处理序列中的每个单独项目,但没有等效的指令来处理数组的每个成员。 我可以解释设置空序列或数组或包含字符串集合的序列或数组的详细语法,但我完全不确定这会有帮助。如果您能用功能术语解释您的需求(输入是什么、输出是什么以及它们如何关联?),那就更好了,而且这可能会更容易转换为 XSLT 代码。 ==更新== 在对问题的更新中,您已经解释过您想要编写一个生成唯一值的函数。为了实现这一点,您建议该函数具有先前调用的内存,以便它可以避免两次生成相同的值。因此,该函数需要修改一些外部内容(具体来说,它对先前调用的记忆):它是一个具有副作用的函数,通常称为“不纯函数”,在纯函数式编程语言中,强烈建议不要这样做,或者这是不可能的。 此问题有多种解决方法,其中最常见的可能是: 生成一个值,该值是您当前在输入中处理的内容的函数,例如使用 position() 或 generate-id() 或 xsl:number。 生成一个有效随机且重复概率极低的值(例如,基于当前时间戳的值)。这就是 UUID 通常的工作原理;对于大多数实际目的来说,每百万年才可能出现一次的值是足够独特的。 编写一个提供生成器的函数,其中生成器有两个属性:您这次可以使用的值,以及您可以调用以获取更多值的新生成器。这就是内置函数 fn:random-number-generator() 的工作原理。这是函数式编程爱好者会这样做的方式,但如果您是函数式编程的新手,则需要一些时间来适应。 如果您需要如您所描述的唯一名称,您可以重新计算上一步中的名称。代码显示了如何实现这一点: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" indent="yes"/> <xsl:variable name="data"> <data> <item name="A"/> <item name="A"/> <item name="B"/> <item name="A"/> <item name="C"/> <item name="C1"/> <item name="C1"/> <item name="C11"/> <item name="C1"/> <item name="C11"/> <item name="C12"/> <item name="D"/> <item name="A"/> </data> </xsl:variable> <xsl:template name="makeunique"> <xsl:param name="data"/> <xsl:if test="not($data/data/item[@replaced = 'true']) and $data/data/item/@replaced"> <data> <xsl:for-each select="$data/data/item"> <item name="{@name}" origname="{@origname}"/> </xsl:for-each> </data> </xsl:if> <xsl:if test="$data/data/item[@replaced = 'true'] or not($data/data/item/@replaced)"> <xsl:variable name="newData"> <data> <xsl:for-each select="$data/data/item"> <xsl:variable name="name"> <xsl:if test="./preceding-sibling::item[@name = current()/@name]"> <xsl:value-of select="concat(current()/@name,./preceding-sibling::item[@name = current()/@name]/last()+1)"/> </xsl:if> <xsl:if test="not(./preceding-sibling::item[@name = current()/@name]) and not(./following-sibling::item[@name = current()/@name])"> <xsl:value-of select="@name"/> </xsl:if> <xsl:if test="not(./preceding-sibling::item[@name = current()/@name]) and (./following-sibling::item[@name = current()/@name])"> <xsl:value-of select="concat(current()/@name,'1')"/> </xsl:if> </xsl:variable> <xsl:variable name="origname"> <xsl:if test="not(current()/@origname)"> <xsl:value-of select="current()/@name"/> </xsl:if> <xsl:if test="current()/@origname"> <xsl:value-of select="current()/@origname"/> </xsl:if> </xsl:variable> <item name="{$name}" origname="{$origname}" replaced="{not($name = current()/@name)}"/> </xsl:for-each> </data> </xsl:variable> <xsl:call-template name ="makeunique"> <xsl:with-param name="data" select="$newData"/> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template name="test"> <xsl:call-template name ="makeunique"> <xsl:with-param name="data" select="$data"/> </xsl:call-template> </xsl:template> </xsl:stylesheet> 输出: <?xml version="1.0" encoding="UTF-8"?> <data> <item name="A1" origname="A"/> <item name="A2" origname="A"/> <item name="B" origname="B"/> <item name="A3" origname="A"/> <item name="C" origname="C"/> <item name="C11" origname="C1"/> <item name="C121" origname="C1"/> <item name="C111" origname="C11"/> <item name="C13" origname="C1"/> <item name="C112" origname="C11"/> <item name="C122" origname="C12"/> <item name="D" origname="D"/> <item name="A4" origname="A"/> </data> 顺便说一句:这个解决方案更适合 XSLT 爱好者。我更喜欢在这里使用有副作用的函数。

回答 2 投票 0

使用 XSLT 将 XML 转换为 HTML 时,空格字符在 HTML 中显示为符号

我有一些使用 VB.net 的代码,使用 XSLT 样式表将 XML 转换为 HTML 文件。 Dim xslt As New XslCompiledTransform(True) xslt.Load(样式表) Dim HTMLoutputFile As String = TempDirectory...

回答 1 投票 0

XSLT2 变换字符串中的多重替换

我使用XSLT(V2)替换功能。我想替换多个字符串。两个字符串正在工作,我如何替换两个以上的字符串。我只想扩展当前节点中的列表: &l...

回答 1 投票 0

将除一个之外的 XML 元素推入 XSL 中的第二级,无需硬编码元素名称

我有以下 XML 输入。 160052-航空自卫队 160052 160052_1 输出...

回答 1 投票 0

需要帮助将包含名称空间的 XML 解析到 Abap 内表中

我正在尝试将此 XML 文件转换为 Abap 内部表,其中根标签 包含命名空间,并且我的 STRAN xml 转换正在转储异常,而没有...

回答 1 投票 0

XSLT:消除集合中具有合格节点的 XML 节点 (XSLT 1.0)

假设我有以下 XML: 假设我有以下 XML: <School> <Class name="Biology"/> <Class name="Math"/> <Class name="English"/> <Student className="Biology" Name="Chris"/> <Student className="English" Name="Kevin"/> <Student className="Biology" Name="Tania"/> <Student className="Math" Name="Kevin"/> <Student className="English" Name="Tania"/> </School> 我想做的(在 XSLT 1.0 中)是消除名为“Tania”的“Student”节点以及通过“className”与它们相关的类节点。所以会产生这样的输出: <School> <Class name="Math"/> <Student className="Math" Name="Kevin"/> </School> 这是我会用钥匙做的事情吗? 此 XSLT 将产生所需的结果 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes" standalone="yes" omit-xml-declaration="yes"/> <xsl:strip-space elements="*"/> <xsl:key name="st" match="Student" use="@Name"/> <xsl:template match="Class[@name = key('st', 'Tania')/@className]"/> <xsl:template match="Student[@className = key('st', 'Tania')/@className]"/> <xsl:template match="@* | node()"> <xsl:copy> <xsl:apply-templates select="@* | node()"/> </xsl:copy> </xsl:template> </xsl:stylesheet>

回答 1 投票 0

使用具有 select 语句的变量作为布尔值

在 XSLT 1.0 中,我正在创建一个其中包含 select 语句的变量。这样做的目的是在变量中处理一次逻辑。然后将该变量用作布尔下游变量或...

回答 1 投票 0

尝试使用xslt代码以结构化方式形成数据,但由于“<p><span" and other characters

我正在尝试使用 xslt 代码以结构化方式形成数据,但由于“”而无法读取数据 我正在尝试使用 xslt 代码以结构化方式形成数据,但由于“”而无法读取数据 这是源 xml 数据: <?xml version='1.0' encoding='UTF-8'?> <wd:Report_Data xmlns:wd="urn:com.workday/bsvc"> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:name>Buddi</wd:name> <wd:title>Executive, Call Center</wd:title> <wd:manager>Dimbu</wd:manager> <wd:tempno>1</wd:tempno> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>1</wd:questionno> <wd:response>&lt;p>Teamwork and Puncutality&lt;/p></wd:response> <wd:date>2023-11-20</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:name>Buddi</wd:name> <wd:title>Executive, Call Center</wd:title> <wd:manager>Dimbu</wd:manager> <wd:tempno>1</wd:tempno> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>2</wd:questionno> <wd:response>&lt;p>Constructive Feedback&lt;/p></wd:response> <wd:date>2023-11-20</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:name>Buddi</wd:name> <wd:title>Executive, Call Center</wd:title> <wd:manager>Dimbu</wd:manager> <wd:tempno>1</wd:tempno> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>3</wd:questionno> <wd:response>4</wd:response> <wd:date>2023-11-20</wd:date> <wd:score>4</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:name>Buddi</wd:name> <wd:title>Executive, Call Center</wd:title> <wd:manager>Dimbu</wd:manager> <wd:tempno>1</wd:tempno> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>4</wd:questionno> <wd:response>6</wd:response> <wd:date>2023-11-20</wd:date> <wd:score>6</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:name>Buddi</wd:name> <wd:title>Executive, Call Center</wd:title> <wd:manager>Dimbu</wd:manager> <wd:tempno>1</wd:tempno> <wd:category>Direct Report</wd:category> <wd:questionno>1</wd:questionno> <wd:response>&lt;p>&lt;span>often recognizes and reward employees for positive workplace behaviors. serves as a role model by consistently behaving in line with the company’s values.&lt;/span>&lt;/p></wd:response> <wd:date>2023-11-20</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:name>Buddi</wd:name> <wd:title>Executive, Call Center</wd:title> <wd:manager>Dimbu</wd:manager> <wd:tempno>1</wd:tempno> <wd:category>Direct Report</wd:category> <wd:questionno>2</wd:questionno> <wd:response>&lt;p>&lt;span>Can definitely use some work on being more flexible and open-minded in approach.&lt;/span>&lt;/p></wd:response> <wd:date>2023-11-20</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:name>Buddi</wd:name> <wd:title>Executive, Call Center</wd:title> <wd:manager>Dimbu</wd:manager> <wd:tempno>1</wd:tempno> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>1</wd:questionno> <wd:response>&lt;p>&lt;span>Communicates clearly and effectively, making it easy for others to understand.&lt;/span>&lt;/p>&lt;p>&lt;/p></wd:response> <wd:date>2023-11-20</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:name>Buddi</wd:name> <wd:title>Executive, Call Center</wd:title> <wd:manager>Dimbu</wd:manager> <wd:tempno>1</wd:tempno> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>2</wd:questionno> <wd:response>&lt;p>&lt;span>Listens attentively and responds thoughtfully to others’ ideas and concerns.&lt;/span>&lt;/p></wd:response> <wd:date>2023-11-20</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:name>Buddi</wd:name> <wd:title>Executive, Call Center</wd:title> <wd:manager>Dimbu</wd:manager> <wd:tempno>1</wd:tempno> <wd:category>Direct Report</wd:category> <wd:questionno>1</wd:questionno> <wd:response>&lt;p>&lt;span>oftens share knowledge and ideas with other team members. consistently meets deadlines&lt;/span>&lt;/p></wd:response> <wd:date>2023-11-20</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:name>Buddi</wd:name> <wd:title>Executive, Call Center</wd:title> <wd:manager>Dimbu</wd:manager> <wd:tempno>1</wd:tempno> <wd:category>Direct Report</wd:category> <wd:questionno>2</wd:questionno> <wd:response>&lt;p>&lt;span>work is technically good, but it needs a more creative approach to stand out.&lt;/span>&lt;/p></wd:response> <wd:date>2023-11-20</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:name>Buddi</wd:name> <wd:title>Executive, Call Center</wd:title> <wd:manager>Dimbu</wd:manager> <wd:tempno>1</wd:tempno> <wd:category>Direct Report</wd:category> <wd:questionno>1</wd:questionno> <wd:response>&lt;p>&lt;span>Demonstrates excellent problem-solving skills, able to analyze complex problems and develop effective solutions. Displays creativity that is inspiring and has had a significant impact on the success of the project&lt;/span>&lt;/p></wd:response> <wd:date>2023-11-20</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:name>Buddi</wd:name> <wd:title>Executive, Call Center</wd:title> <wd:manager>Dimbu</wd:manager> <wd:tempno>1</wd:tempno> <wd:category>Direct Report</wd:category> <wd:questionno>2</wd:questionno> <wd:response>&lt;p>&lt;span>Appears to be stuck in a rut and is not coming up with new ideas or approaches to address challenges&lt;/span>&lt;/p></wd:response> <wd:date>2023-11-20</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:name>Buddi</wd:name> <wd:title>Executive, Call Center</wd:title> <wd:manager>Dimbu</wd:manager> <wd:tempno>1</wd:tempno> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>1</wd:questionno> <wd:response>&lt;p>&lt;span>Effectively summarizes information and provides relevant updates to stakeholders. Shares feedback constructively, motivating colleagues to improve performance.&lt;/span>&lt;/p></wd:response> <wd:date>2023-11-20</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:name>Buddi</wd:name> <wd:title>Executive, Call Center</wd:title> <wd:manager>Dimbu</wd:manager> <wd:tempno>1</wd:tempno> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>2</wd:questionno> <wd:response>&lt;p>&lt;span>Has difficulty managing time effectively, leading to missed deadlines or rushed work. Has a tendency to rush work, resulting in lower quality outcomes.&lt;/span>&lt;/p></wd:response> <wd:date>2023-11-20</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:name>Buddi</wd:name> <wd:title>Executive, Call Center</wd:title> <wd:manager>Dimbu</wd:manager> <wd:tempno>1</wd:tempno> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>1</wd:questionno> <wd:response>&lt;p>&lt;span>Feedback is an investment in each other, and peer accountability is a central tenet in Achieving Together. Thank you for giving this important responsibility the time and care it deserves! &lt;/span>&lt;/p>&lt;p>&lt;/p>&lt;p>&lt;span>This form should take approximately 15 minutes to complete. Please provide thoughtful (but concise) answers and target two to three full sentences for each question. DON’T write a novel, provide only cryptic bullets, or overthink it. DO be honest and respectful. And save your feedback responses frequently to avoid losing them!  &lt;/span>&lt;/p>&lt;p>&lt;b>&lt;span>Important notes about anonymity: &lt;/span>&lt;/b>&lt;span>&lt;b>&lt;span>Feedback you provide to your manager or peers/stakeholders will be aggregated with feedback from other respondents and &lt;i>&lt;u>shared verbatim but anonymously&lt;/u> &lt;/i>with the recipient. The manager of the feedback recipient will, however, see your attributed feedback. This is to better understand and convey helpful context to the colleague (if needed), while maintaining the feedback provider’s confidentiality. If you are a people-manager, the feedback you provide to your direct reports will &lt;i>not&lt;/i> be anonymous. &lt;/span>&lt;/b>&lt;/span>&lt;/p>&lt;p>&lt;b>&lt;span>&lt;/span>&lt;/b>&lt;/p>&lt;p>&lt;b>&lt;span>Declining to provide feedback. &lt;/span>&lt;/b>&lt;span>Under certain circumstances, declining to submit feedback for a specific recipient may be warranted. If, for example, you feel that you don’t have enough experience with the person to provide minimally helpful feedback and would like to cancel the request, please reach out to your People Partner to discuss.&lt;/span>&lt;/p>&lt;p>&lt;/p>&lt;p>&lt;span>Feedback is an investment in each other, and peer accountability is a central tenet in Achieving Together. Thank you for giving this important responsibility the time and care it deserves! &lt;/span>&lt;/p>&lt;p>&lt;/p>&lt;p>&lt;span>This form should take approximately 15 minutes to complete. Please provide thoughtful (but concise) answers and target two to three full sentences for each question. DON’T write a novel, provide only cryptic bullets, or overthink it. DO be honest and respectful. And save your feedback responses frequently to avoid losing them!  &lt;/span>&lt;/p>&lt;p>&lt;b>&lt;span>Important notes about anonymity: &lt;/span>&lt;/b>&lt;span>&lt;b>&lt;span>Feedback you provide to your manager or peers/stakeholders will be aggregated with feedback from other respondents and &lt;i>&lt;u>shared verbatim but anonymously&lt;/u> &lt;/i>with the recipient. The manager of the feedback recipient will, however, see your attributed feedback. This is to better understand and convey helpful context to the colleague (if needed), while maintaining the feedback provider’s confidentiality. If you are a people-manager, the feedback you provide to your direct reports will &lt;i>not&lt;/i> be anonymous. &lt;/span>&lt;/b>&lt;/span>&lt;/p>&lt;p>&lt;b>&lt;span>&lt;/span>&lt;/b>&lt;/p>&lt;p>&lt;b>&lt;span>Declining to provide feedback. &lt;/span>&lt;/b>&lt;span>Under certain circumstances, declining to submit feedback for a specific recipient may be warranted. If, for example, you feel that you don’t have enough experience with the person to provide minimally helpful feedback and would like to cancel the request, please reach out to your People Partner to discuss.&lt;/span>&lt;/p>&lt;p>&lt;/p>&lt;p>&lt;span>Feedback is an investment in each other, and peer accountability is a central tenet in Achieving Together. Thank you for giving this important responsibility the time and care it deserves! &lt;/span>&lt;/p>&lt;p>&lt;/p>&lt;p>&lt;span>This form should take approximately 15 minutes to complete. Please provide thoughtful (but concise) answers and target two to three full sentences for each question. DON’T write a novel, provide only cryptic bullets, or overthink it. DO be honest and respectful. And save your feedback responses frequently to avoid losing them!  &lt;/span>&lt;/p>&lt;p>&lt;b>&lt;span>Important notes about anonymity: &lt;/span>&lt;/b>&lt;span>&lt;b>&lt;span>Feedback you provide to your manager or peers/stakeholders will be aggregated with feedback from other respondents and &lt;i>&lt;u>shared verbatim but anonymously&lt;/u> &lt;/i>with the recipient. The manager of the feedback recipient will, however, see your attributed feedback. This is to better understand and convey helpful context to the colleague (if needed), while maintaining the feedback provider’s confidentiality. If you are a people-manager, the feedback you provide to your direct reports will &lt;i>not&lt;/i> be anonymous. &lt;/span>&lt;/b>&lt;/span>&lt;/p>&lt;p>&lt;b>&lt;span>&lt;/span>&lt;/b>&lt;/p>&lt;p>&lt;b>&lt;span>Declining to provide feedback. &lt;/span>&lt;/b>&lt;span>Under certain circumstances, declining to submit feedback for a specific recipient may be warranted. If, for example, you feel that you don’t have enough experience with the person to provide minimally helpful feedback and would like to cancel the request, please reach out to your People Partner to discuss.&lt;/span>&lt;/p>&lt;p>&lt;span>Feedback is an investment in each other, and peer accountability is a central tenet in Achieving Together. Thank you for giving this important responsibility the time and care it deserves! &lt;/span>&lt;/p>&lt;p>&lt;/p>&lt;p>&lt;span>This form should take approximately 15 minutes to complete. Please provide thoughtful (but concise) answers and target two to three full sentences for each question. DON’T write a novel, provide only cryptic bullets, or overthink it. DO be honest and respectful. And save your feedback responses frequently to avoid losing them!  &lt;/span>&lt;/p>&lt;p>&lt;b>&lt;span>Important notes about anonymity: &lt;/span>&lt;/b>&lt;span>&lt;b>&lt;span>Feedback you provide to your manager or peers/stakeholders will be aggregated with feedback from other respondents and &lt;i>&lt;u>shared verbatim but anonymously&lt;/u> &lt;/i>with the recipient. The manager of the feedback recipient will, however, see your attributed feedback. This is to better understand and convey helpful context to the colleague (if needed), while maintaining the feedback provider’s confidentiality. If you are a people-manager, the feedback you provide to your direct reports will &lt;i>not&lt;/i> be anonymous. &lt;/span>&lt;/b>&lt;/span>&lt;/p>&lt;p>&lt;b>&lt;span>&lt;/span>&lt;/b>&lt;/p>&lt;p>&lt;b>&lt;span>Declining to provide feedback. &lt;/span>&lt;/b>&lt;span>Under certain circumstances, declining to submit feedback for a specific recipient may be warranted. If, for example, you feel that you don’t have enough experience with the person to provide minimally helpful feedback and would like to cancel the request, please reach out to your People Partner to discuss.&lt;/span>&lt;/p>&lt;p>&lt;span>Feedback is an investment in each other, and peer accountability is a central tenet in Achieving Together. Thank you for giving this important responsibility the time and care it deserves! &lt;/span>&lt;/p>&lt;p>&lt;/p>&lt;p>&lt;span>This form should take approximately 15 minutes to complete. Please provide thoughtful (but concise) answers and target two to three full sentences for each question. DON’T write a novel, provide only cryptic bullets, or overthink it. DO be honest and respectful. And save your feedback responses frequently to avoid losing them!  &lt;/span>&lt;/p>&lt;p>&lt;b>&lt;span>Important notes about anonymity: &lt;/span>&lt;/b>&lt;span>&lt;b>&lt;span>Feedback you provide to your manager or peers/stakeholders will be aggregated with feedback from other respondents and &lt;i>&lt;u>shared verbatim but anonymously&lt;/u> &lt;/i>with the recipient. The manager of the feedback recipient will, however, see your attributed feedback. This is to better understand and convey helpful context to the colleague (if needed), while maintaining the feedback provider’s confidentiality. If you are a people-manager, the feedback you provide to your direct reports will &lt;i>not&lt;/i> be anonymous. &lt;/span>&lt;/b>&lt;/span>&lt;/p>&lt;p>&lt;b>&lt;span>&lt;/span>&lt;/b>&lt;/p>&lt;p>&lt;b>&lt;span>Declining to provide feedback. &lt;/span>&lt;/b>&lt;span>Under certain circumstances, declining to submit feedback for a specific recipient may be warranted. If, for example, you feel that you don’t have enough experience with the person to provide minimally helpful feedback and would like to cancel the request, please reach out to your People Partner to discuss.&lt;/span>&lt;/p>&lt;p>&lt;/p></wd:response> <wd:date>2023-11-21</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:name>Buddi</wd:name> <wd:title>Executive, Call Center</wd:title> <wd:manager>Dimbu</wd:manager> <wd:tempno>1</wd:tempno> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>2</wd:questionno> <wd:response>&lt;p>test&lt;/p></wd:response> <wd:date>2023-11-21</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:name>Buddi</wd:name> <wd:title>Executive, Call Center</wd:title> <wd:manager>Dimbu</wd:manager> <wd:tempno>1</wd:tempno> <wd:category>Direct Report</wd:category> <wd:questionno>1</wd:questionno> <wd:response>&lt;p>&lt;span>Effectively summarizes information and provides relevant updates to stakeholders. Demonstrates excellent organizational skills, keeping on top of multiple projects and responsibilities.&lt;/span>&lt;/p></wd:response> <wd:date>2023-11-20</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:name>Buddi</wd:name> <wd:title>Executive, Call Center</wd:title> <wd:manager>Dimbu</wd:manager> <wd:tempno>1</wd:tempno> <wd:category>Direct Report</wd:category> <wd:questionno>2</wd:questionno> <wd:response>&lt;p>&lt;span>Has room for improvement in active listening skills and demonstrating empathy towards colleagues.&lt;/span>&lt;/p></wd:response> <wd:date>2023-11-20</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:name>Buddi</wd:name> <wd:title>Executive, Call Center</wd:title> <wd:manager>Dimbu</wd:manager> <wd:tempno>1</wd:tempno> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>1</wd:questionno> <wd:response>&lt;p>&lt;span>Is a reliable team member, consistently meeting commitments and delivering high-quality work. Is committed to continuous improvement, regularly seeking feedback and making adjustments.&lt;/span>&lt;/p></wd:response> <wd:date>2023-11-20</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:name>Buddi</wd:name> <wd:title>Executive, Call Center</wd:title> <wd:manager>Dimbu</wd:manager> <wd:tempno>1</wd:tempno> <wd:category>Peer/Stakeholder</wd:category> <wd:questionno>2</wd:questionno> <wd:response>&lt;p>&lt;span>Has a tendency to rush work, resulting in lower quality outcomes.&lt;/span>&lt;/p></wd:response> <wd:date>2023-11-20</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:name>Buddi</wd:name> <wd:title>Executive, Call Center</wd:title> <wd:manager>Dimbu</wd:manager> <wd:tempno>1</wd:tempno> <wd:category>Direct Report</wd:category> <wd:questionno>1</wd:questionno> <wd:response>&lt;p>&lt;span>Shows pride in work, going above and beyond to ensure excellence. Takes responsibility for tasks and projects, ensuring they are completed on time and to the required standard.&lt;/span>&lt;/p></wd:response> <wd:date>2023-11-20</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:name>Buddi</wd:name> <wd:title>Executive, Call Center</wd:title> <wd:manager>Dimbu</wd:manager> <wd:tempno>1</wd:tempno> <wd:category>Direct Report</wd:category> <wd:questionno>2</wd:questionno> <wd:response>&lt;p>&lt;span>Often requires a nudge to take the reins and identify opportunities for improvement.&lt;/span>&lt;/p></wd:response> <wd:date>2023-11-20</wd:date> <wd:score>0</wd:score> </wd:Report_Entry> <wd:Report_Entry> <wd:empid>123</wd:empid> <wd:name>Buddi</wd:name> <wd:title>Executive, Call Center</wd:title> <wd:manager>Dimbu</wd:manager> <wd:tempno>1</wd:tempno> <wd:category>Direct Report</wd:category> <wd:questionno>4</wd:questionno> <wd:response>6</wd:response> <wd:date>2023-11-20</wd:date> <wd:score>6</wd:score> </wd:Report_Entry> </wd:Report_Data> 这是xslt代码,我尝试了但没有获得MRQ1,DRQ1,PSQ1,DRPSQ1,MRQ2,DRQ2,PSQ2,DRPSQ2的数据结果。 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:is="java:com.workday.esb.intsys.xpath.ParsedIntegrationSystemFunctions" xmlns:xdiff="urn:com.workday/esb/xdiff" xmlns:wd="urn:com.workday/bsvc"> <xsl:output method="xml" indent="yes" omit-xml-declaration="no"/> <xsl:variable name="response" select="'Response'"/> <xsl:function name="wd:formatPSQ"> <xsl:param name="psqValue"/> <xsl:param name="lastElement"/> <xsl:value-of select="concat('{\&quot;Response\&quot;:{\&quot;', $psqValue, '\&quot;}')"/> <xsl:if test="$lastElement = false()"> <xsl:value-of select="','"/> </xsl:if> </xsl:function> <xsl:template match="/"> <Report_Data> <xsl:apply-templates select="wd:Report_Data"/> </Report_Data> </xsl:template> <xsl:template match="wd:Report_Data"> <xsl:for-each-group select="wd:Report_Entry" group-by="wd:empid"> <Report_Entry> <empid> <xsl:value-of select="wd:empid"/> </empid> <name> <xsl:value-of select="wd:name"/> </name> <title> <xsl:value-of select="wd:title"/> </title> <manager> <xsl:value-of select="wd:manager"/> </manager> <tempno> <xsl:value-of select="wd:tempno"/> </tempno> <MRQ1> <xsl:if test="(current-group()[wd:category = 'Manager' and wd:questionno = '1']/wd:response)"> <xsl:text>[</xsl:text> <xsl:for-each select="current-group()[wd:category = 'Manager' and wd:questionno = '1']"> <xsl:text>{"Response":"</xsl:text> <xsl:value-of select="wd:response/*"/> <xsl:text>"}</xsl:text> <xsl:if test="position() != last()">,</xsl:if> </xsl:for-each> <xsl:text>]</xsl:text> </xsl:if> </MRQ1> <DRQ1> <xsl:if test="(current-group()[wd:category = 'Direct Report' and wd:questionno = '1']/wd:response)"> <xsl:text>[</xsl:text> <xsl:for-each select="current-group()[wd:category = 'Direct Report' and wd:questionno = '1']"> <xsl:value-of select="wd:formatPSQ(wd:response/p, (position() = last()))"/> </xsl:for-each> <xsl:text>]</xsl:text> </xsl:if> </DRQ1> <PSQ1> <xsl:if test="(current-group()[wd:category = 'Peer/Stakeholder' and wd:questionno = '1']/wd:response)"> <xsl:text>[</xsl:text> <xsl:for-each select="current-group()[wd:category = 'Peer/Stakeholder' and wd:questionno = '1']"> <xsl:text>{"Response":"</xsl:text> <xsl:value-of select="wd:response/*"/> <xsl:text>"}</xsl:text> <xsl:if test="position() != last()">,</xsl:if> </xsl:for-each> <xsl:text>]</xsl:text> </xsl:if> </PSQ1> <DRPSQ1> <xsl:if test="(current-group()[(wd:category = 'Peer/Stakeholder' or wd:category = 'Direct Report') and wd:questionno = '1']/wd:response)"> <xsl:text>[</xsl:text> <xsl:for-each select="current-group()[(wd:category = 'Peer/Stakeholder' or wd:category = 'Direct Report') and wd:questionno = '1']"> <xsl:text>{"Response":"</xsl:text> <xsl:value-of select="wd:response/*"/> <xsl:text>"}</xsl:text> <xsl:if test="position() != last()">,</xsl:if> </xsl:for-each> <xsl:text>]</xsl:text> </xsl:if> </DRPSQ1> <MRQ2> <xsl:if test="(current-group()[wd:category = 'Manager' and wd:questionno = '2']/wd:response)"> <xsl:text>[</xsl:text> <xsl:for-each select="current-group()[wd:category = 'Manager' and wd:questionno = '2']"> <xsl:text>{"Response":"</xsl:text> <xsl:value-of select="wd:response/*"/> <xsl:text>"}</xsl:text> <xsl:if test="position() != last()">,</xsl:if> </xsl:for-each> <xsl:text>]</xsl:text> </xsl:if> </MRQ2> <DRQ2> <xsl:if test="(current-group()[wd:category = 'Direct Report' and wd:questionno = '2']/wd:response)"> <xsl:text>[</xsl:text> <xsl:for-each select="current-group()[wd:category = 'Direct Report' and wd:questionno = '2']"> <xsl:value-of select="wd:formatPSQ(wd:response/p, (position() = last()))"/> </xsl:for-each> <xsl:text>]</xsl:text> </xsl:if> </DRQ2> <PSQ2> <xsl:if test="(current-group()[wd:category = 'Peer/Stakeholder' and wd:questionno = '2']/wd:response)"> <xsl:text>[</xsl:text> <xsl:for-each select="current-group()[wd:category = 'Peer/Stakeholder' and wd:questionno = '2']"> <xsl:value-of select="wd:formatPSQ(wd:response/p, (position() = last()))"/> </xsl:for-each> <xsl:text>]</xsl:text> </xsl:if> </PSQ2> <DRPSQ2> <xsl:if test="(current-group()[(wd:category = 'Peer/Stakeholder' or wd:category = 'Direct Report') and wd:questionno = '2']/wd:response)"> <xsl:text>[</xsl:text> <xsl:for-each select="current-group()[(wd:category = 'Peer/Stakeholder' or wd:category = 'Direct Report') and wd:questionno = '2']"> <xsl:value-of select="wd:formatPSQ(wd:response/p, (position() = last()))"/> </xsl:for-each> <xsl:text>]</xsl:text> </xsl:if> </DRPSQ2> </Report_Entry> </xsl:for-each-group> </xsl:template> </xsl:stylesheet> 以下是员工 PSQ1 的预期结果样本: <PSQ1>[ {"Response": "You adopted a practical approach to problem-solving and building trust with others came easy to you"}, {"Response": "Skillfully overcomes client objections. A loyal and trustworthy employee."}, {"Response": "Takes initiative to identify and address challenges or opportunities withoutbeing prompted. Shows creativity and innovation in identifying new solutions or approaches to tasks and projects."} ]</PSQ1> 尝试将 PSQ1 的代码更改为: <PSQ1> <xsl:if test="(current-group()[wd:category = 'Peer/Stakeholder' and wd:questionno = '1']/wd:response)"> <xsl:text>[</xsl:text> <xsl:for-each select="current-group()[wd:category = 'Peer/Stakeholder' and wd:questionno = '1']/parse-xml-fragment(wd:response)/p"> <xsl:text>{"Response":"</xsl:text> <xsl:value-of select="."/> <xsl:text>"}</xsl:text> <xsl:if test="position() != last()">,</xsl:if> </xsl:for-each> <xsl:text>]</xsl:text> </xsl:if> </PSQ1> 对于其他有问题的领域也是如此。

回答 1 投票 0

根据子元素值对元素进行分组

输入xml: 10 20 30 30 20...

回答 1 投票 0

如何为xls:number创建count参数?

我正在通过 xsl-fo 创建一个表。到目前为止,它是有效的,因为源 xml 只包含一个文档,从而生成一个表。我目前正在切换到包含多个文档的源 xml...

回答 1 投票 0

使用 XSLT 从 XML 生成 CSV

无法在 XML 文件上使用 XSLT 正确生成 CSV。 我的问题是生成一个 csv 格式的货币汇率文件,该文件将由连接器使用。 示例 CSV 文件应为: 计算逆...

回答 1 投票 0

如何使用 XSLT 1.0 将 ISO 8601 持续时间转换为秒

这在 XSLT 2.0 中似乎很容易做到,但微软以其无限的智慧并不支持 Visual Studio 2005 中的 XSLT 2.0。

回答 3 投票 0

需要使用 xslt 计算一组数字的中位数

需要帮助使用 xslt 计算一组数字的中位数。 例如:我得到的第一个 Empid 的 PSQ3_Values 是 8 6 8,需要从中获取中值。例如:排序:6,8,8,中位数为 8。 正在获取 PSQ3_V...

回答 1 投票 0

xml xslt问题

我有一个 xml,其中包含“word”元素内的文本,例如 警察 已确认 他们是 提问 <...

回答 6 投票 0

如果在指定日期范围内,如何申请每个组并为每个列出的代码返回 1 行?

我正在尝试在代码中创建几个嵌套循环,以按 Time_Data/Time_Off/Code 进行分组。我想在输出中的 1 行上显示连续几天内的所有休假代码。任何补充...

回答 1 投票 0

使用 XSL 转换表修改 XML 中的命名空间

我在尝试更改 XML 命名空间定义时遇到问题。 我的输入 XML 中有这个命名空间: 在我的 XM 中更低...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.