如何解决尝试从我的xml的xslt中的两个循环中添加信息
我正在尝试将xml转换为xslt表:
这是我的xml:
import cv2
cap = cv2.VideoCapture(0)
print(cap.grab())
# Check if the webcam is opened correctly
if not cap.isOpened():
raise IOError("Cannot open webcam")
while True:
ret,frame = cap.read()
frame = cv2.resize(frame,None,fx=0.5,fy=0.5,interpolation=cv2.INTER_AREA)
cv2.imshow('Input',frame)
c = cv2.waitKey(1)
if c == 27:
break
cap.release()
cv2.destroyAllWindows()
... * 这是xslt:
......
.......
?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="VHSXSLT500.xsl"?>
<test>
<VHSResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://SOMEURL.com/ABC">
<BaseResponse>
<VIN>123456789</VIN>
<VehicleDamageabilityIndicator>AB</VehicleDamageabilityIndicator>
<NumberOfTitlingTransactionsIndicator>AB</NumberOfTitlingTransactionsIndicator>
<LastOwnerAcquisitionDate />
<OrderDate>2020-08-12T10:54:00.579696-04:00</OrderDate>
<ErrorReason>abc</ErrorReason>
</BaseResponse>
</VHSResponse>
Error>
<Message>An error has occurred.</Message>
<ExceptionMessage>Object reference not set to an instance of an object.</ExceptionMessage>
<ExceptionType>System.NullReferenceException</ExceptionType>
</Error>
</test>
.......
我得到的结果却不是我想要的:
这就是我想要的结果..基本上作为表中依序进入我的xml的条目
我知道它需要一些多环循环逻辑,但是不确定如何做到这一点。.我是xslt的初学者。
当我将xlmns保留在xml中时,它也不会填充结果,仅当我从xml中删除xmlns时,我才可以看到表。不确定是否要帮忙。
解决方法
如果您希望每条记录一行,那么-
- 如果每个记录只有一个
,请执行以下操作:
<xsl:for-each select="test">
<tr>
<td style="text-align:center"><xsl:number value="position()" format="1" /></td>
<td style="text-align:center"><xsl:value-of select="VHSResponse/BaseResponse/VIN"/></td>
<td style="text-align:center"><xsl:value-of select="VHSResponse/BaseResponse/VehicleDamageabilityIndicator"/></td>
<td style="text-align:center"><xsl:value-of select="VHSResponse/BaseResponse/NumberOfTitlingTransactionsIndicator"/></td>
<td style="text-align:center"><xsl:value-of select="VHSResponse/BaseResponse/LastOwnerAcquisitionDate"/></td>
<td style="text-align:center"><xsl:value-of select="VHSResponse/BaseResponse/OrderDate"/></td>
<td style="text-align:center"><xsl:value-of select="VHSResponse/BaseResponse/ErrorReason"/></td>
<td style="text-align:center"><xsl:value-of select="Error/Message"/></td>
</tr>
- 如果每条消息有多个错误(似乎是这种情况),则可以执行以下操作:
<xsl:for-each select="test">
<tr>
<td style="text-align:center"><xsl:number value="position()" format="1" /></td>
<td style="text-align:center"><xsl:value-of select="VHSResponse/BaseResponse/VIN"/></td>
<td style="text-align:center"><xsl:value-of select="VHSResponse/BaseResponse/VehicleDamageabilityIndicator"/></td>
<td style="text-align:center"><xsl:value-of select="VHSResponse/BaseResponse/NumberOfTitlingTransactionsIndicator"/></td>
<td style="text-align:center"><xsl:value-of select="VHSResponse/BaseResponse/LastOwnerAcquisitionDate"/></td>
<td style="text-align:center"><xsl:value-of select="VHSResponse/BaseResponse/OrderDate"/></td>
<td style="text-align:center"><xsl:value-of select="VHSResponse/BaseResponse/ErrorReason"/></td>
<td style="text-align:center">
<xsl:for-each select="Error">
<xsl:value-of select="Message"/>
</xsl:for-each>
</td>
</tr>
这将导致所有错误消息都在一个表单元格中-如果您希望每行一条记录,这是您想要的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。