Xpath 查找与上下文元素相关的条件的直接同级
我有XML结构执行XPath的上下文是类属性为“ac”的元素之一。请帮助我编写XPath,以查找属性为“ac1”的上下文元素的所有直接同级。例如,如果执行上下文是类属性为“ac”的第二个元素,则结果应包含两个(而不是三个)类属性为“ac1”的立即元素 多谢各位Xpath 查找与上下文元素相关的条件的直接同级,xpath,Xpath,我有XML结构执行XPath的上下文是类属性为“ac”的元素之一。请帮助我编写XPath,以查找属性为“ac1”的上下文元素的所有直接同级。例如,如果执行上下文是类属性为“ac”的第二个元素,则结果应包含两个(而不是三个)类属性为“ac1”的立即元素 多谢各位 <container> <item class="ac"/> <item class="ac1"/> <item class="ac1"/> <item class="ac1"/>
<container>
<item class="ac"/>
<item class="ac1"/>
<item class="ac1"/>
<item class="ac1"/>
<item class="ac"/>
<item class="ac1"/>
<item class="ac1"/>
<item class="ac2"/>
<item class="ac1"/>
<item class="ac"/>
<item class="ac1"/>
<item class="ac1"/>
<item class="ac1"/>
</container>
I.在XPath 1.0中,对两个节点集的交集使用Kayessian方法:
$ns1[count(.|$ns2) = count($ns2)]
<container>
<item class="ac"/>
<item class="ac1"/>
<item class="ac1"/>
<item class="ac1"/>
<item class="ac"/>
<item class="ac1"/>
<item class="ac1"/>
<item class="ac2"/>
<item class="ac1"/>
<item class="ac"/>
<item class="ac1"/>
<item class="ac1"/>
<item class="ac1"/>
</container>
这将选择两个节点集的交点$ns1
和$ns2
在此中替换:
$ns1
带:
/*/*[@class='ac'][1]/following-sibling::*[@class='ac1']
/*/*[@class='ac'][2]
/following-sibling::*[not(@class='ac1')][3]
/preceding-sibling::*
/*/*[@class='ac'][4]
/following-sibling::*[@class='ac1']
[count(.
|
/*/*[@class='ac'][5]
/following-sibling::*[not(@class='ac1')][6]
/preceding-sibling::*
)
=
count(/*/*[@class='ac'][7]
/following-sibling::*[not(@class='ac1')][8]
/preceding-sibling::*
)
]
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:variable name="ns1" select=
"/*/*[@class='ac'][9]/following-sibling::*[@class='ac1']"/>
<xsl:variable name="ns2" select=
"/*/*[@class='ac'][10]
/following-sibling::*[not(@class='ac1')][11]
/preceding-sibling::*"/>
<xsl:template match="/">
<xsl:copy-of select=
"$ns1[count(.|$ns2) = count($ns2)]"/>
=========
<xsl:copy-of select=
"/*/*[@class='ac'][12]
/following-sibling::*[@class='ac1']
[count(.
|
/*/*[@class='ac'][13]
/following-sibling::*[not(@class='ac1')][14]
/preceding-sibling::*
)
=
count(/*/*[@class='ac'][15]
/following-sibling::*[not(@class='ac1')][16]
/preceding-sibling::*
)
]
"/>
</xsl:template>
</xsl:stylesheet>
<item class="ac1"/>
<item class="ac1"/>
=========
<item class="ac1"/>
<item class="ac1"/>
和$ns2
与:
/*/*[@class='ac'][1]/following-sibling::*[@class='ac1']
/*/*[@class='ac'][2]
/following-sibling::*[not(@class='ac1')][3]
/preceding-sibling::*
/*/*[@class='ac'][4]
/following-sibling::*[@class='ac1']
[count(.
|
/*/*[@class='ac'][5]
/following-sibling::*[not(@class='ac1')][6]
/preceding-sibling::*
)
=
count(/*/*[@class='ac'][7]
/following-sibling::*[not(@class='ac1')][8]
/preceding-sibling::*
)
]
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:variable name="ns1" select=
"/*/*[@class='ac'][9]/following-sibling::*[@class='ac1']"/>
<xsl:variable name="ns2" select=
"/*/*[@class='ac'][10]
/following-sibling::*[not(@class='ac1')][11]
/preceding-sibling::*"/>
<xsl:template match="/">
<xsl:copy-of select=
"$ns1[count(.|$ns2) = count($ns2)]"/>
=========
<xsl:copy-of select=
"/*/*[@class='ac'][12]
/following-sibling::*[@class='ac1']
[count(.
|
/*/*[@class='ac'][13]
/following-sibling::*[not(@class='ac1')][14]
/preceding-sibling::*
)
=
count(/*/*[@class='ac'][15]
/following-sibling::*[not(@class='ac1')][16]
/preceding-sibling::*
)
]
"/>
</xsl:template>
</xsl:stylesheet>
<item class="ac1"/>
<item class="ac1"/>
=========
<item class="ac1"/>
<item class="ac1"/>
得到的XPath表达式是:
/*/*[@class='ac'][1]/following-sibling::*[@class='ac1']
/*/*[@class='ac'][2]
/following-sibling::*[not(@class='ac1')][3]
/preceding-sibling::*
/*/*[@class='ac'][4]
/following-sibling::*[@class='ac1']
[count(.
|
/*/*[@class='ac'][5]
/following-sibling::*[not(@class='ac1')][6]
/preceding-sibling::*
)
=
count(/*/*[@class='ac'][7]
/following-sibling::*[not(@class='ac1')][8]
/preceding-sibling::*
)
]
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:variable name="ns1" select=
"/*/*[@class='ac'][9]/following-sibling::*[@class='ac1']"/>
<xsl:variable name="ns2" select=
"/*/*[@class='ac'][10]
/following-sibling::*[not(@class='ac1')][11]
/preceding-sibling::*"/>
<xsl:template match="/">
<xsl:copy-of select=
"$ns1[count(.|$ns2) = count($ns2)]"/>
=========
<xsl:copy-of select=
"/*/*[@class='ac'][12]
/following-sibling::*[@class='ac1']
[count(.
|
/*/*[@class='ac'][13]
/following-sibling::*[not(@class='ac1')][14]
/preceding-sibling::*
)
=
count(/*/*[@class='ac'][15]
/following-sibling::*[not(@class='ac1')][16]
/preceding-sibling::*
)
]
"/>
</xsl:template>
</xsl:stylesheet>
<item class="ac1"/>
<item class="ac1"/>
=========
<item class="ac1"/>
<item class="ac1"/>
基于XSLT的验证:
/*/*[@class='ac'][1]/following-sibling::*[@class='ac1']
/*/*[@class='ac'][2]
/following-sibling::*[not(@class='ac1')][3]
/preceding-sibling::*
/*/*[@class='ac'][4]
/following-sibling::*[@class='ac1']
[count(.
|
/*/*[@class='ac'][5]
/following-sibling::*[not(@class='ac1')][6]
/preceding-sibling::*
)
=
count(/*/*[@class='ac'][7]
/following-sibling::*[not(@class='ac1')][8]
/preceding-sibling::*
)
]
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:variable name="ns1" select=
"/*/*[@class='ac'][9]/following-sibling::*[@class='ac1']"/>
<xsl:variable name="ns2" select=
"/*/*[@class='ac'][10]
/following-sibling::*[not(@class='ac1')][11]
/preceding-sibling::*"/>
<xsl:template match="/">
<xsl:copy-of select=
"$ns1[count(.|$ns2) = count($ns2)]"/>
=========
<xsl:copy-of select=
"/*/*[@class='ac'][12]
/following-sibling::*[@class='ac1']
[count(.
|
/*/*[@class='ac'][13]
/following-sibling::*[not(@class='ac1')][14]
/preceding-sibling::*
)
=
count(/*/*[@class='ac'][15]
/following-sibling::*[not(@class='ac1')][16]
/preceding-sibling::*
)
]
"/>
</xsl:template>
</xsl:stylesheet>
<item class="ac1"/>
<item class="ac1"/>
=========
<item class="ac1"/>
<item class="ac1"/>
=========
在提供的XML文档上应用此转换时:
$ns1[count(.|$ns2) = count($ns2)]
<container>
<item class="ac"/>
<item class="ac1"/>
<item class="ac1"/>
<item class="ac1"/>
<item class="ac"/>
<item class="ac1"/>
<item class="ac1"/>
<item class="ac2"/>
<item class="ac1"/>
<item class="ac"/>
<item class="ac1"/>
<item class="ac1"/>
<item class="ac1"/>
</container>
对两个XPath表达式(一个带变量,另一个带替换变量)进行求值,并将它们各自选择的节点复制到输出中:
/*/*[@class='ac'][1]/following-sibling::*[@class='ac1']
/*/*[@class='ac'][2]
/following-sibling::*[not(@class='ac1')][3]
/preceding-sibling::*
/*/*[@class='ac'][4]
/following-sibling::*[@class='ac1']
[count(.
|
/*/*[@class='ac'][5]
/following-sibling::*[not(@class='ac1')][6]
/preceding-sibling::*
)
=
count(/*/*[@class='ac'][7]
/following-sibling::*[not(@class='ac1')][8]
/preceding-sibling::*
)
]
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:variable name="ns1" select=
"/*/*[@class='ac'][9]/following-sibling::*[@class='ac1']"/>
<xsl:variable name="ns2" select=
"/*/*[@class='ac'][10]
/following-sibling::*[not(@class='ac1')][11]
/preceding-sibling::*"/>
<xsl:template match="/">
<xsl:copy-of select=
"$ns1[count(.|$ns2) = count($ns2)]"/>
=========
<xsl:copy-of select=
"/*/*[@class='ac'][12]
/following-sibling::*[@class='ac1']
[count(.
|
/*/*[@class='ac'][13]
/following-sibling::*[not(@class='ac1')][14]
/preceding-sibling::*
)
=
count(/*/*[@class='ac'][15]
/following-sibling::*[not(@class='ac1')][16]
/preceding-sibling::*
)
]
"/>
</xsl:template>
</xsl:stylesheet>
<item class="ac1"/>
<item class="ac1"/>
=========
<item class="ac1"/>
<item class="ac1"/>
=========
II。XPath 2.0解决方案:
/*/*[@class='ac'][1]/following-sibling::*[@class='ac1']
/*/*[@class='ac'][2]
/following-sibling::*[not(@class='ac1')][3]
/preceding-sibling::*
/*/*[@class='ac'][4]
/following-sibling::*[@class='ac1']
[count(.
|
/*/*[@class='ac'][5]
/following-sibling::*[not(@class='ac1')][6]
/preceding-sibling::*
)
=
count(/*/*[@class='ac'][7]
/following-sibling::*[not(@class='ac1')][8]
/preceding-sibling::*
)
]
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:variable name="ns1" select=
"/*/*[@class='ac'][9]/following-sibling::*[@class='ac1']"/>
<xsl:variable name="ns2" select=
"/*/*[@class='ac'][10]
/following-sibling::*[not(@class='ac1')][11]
/preceding-sibling::*"/>
<xsl:template match="/">
<xsl:copy-of select=
"$ns1[count(.|$ns2) = count($ns2)]"/>
=========
<xsl:copy-of select=
"/*/*[@class='ac'][12]
/following-sibling::*[@class='ac1']
[count(.
|
/*/*[@class='ac'][13]
/following-sibling::*[not(@class='ac1')][14]
/preceding-sibling::*
)
=
count(/*/*[@class='ac'][15]
/following-sibling::*[not(@class='ac1')][16]
/preceding-sibling::*
)
]
"/>
</xsl:template>
</xsl:stylesheet>
<item class="ac1"/>
<item class="ac1"/>
=========
<item class="ac1"/>
<item class="ac1"/>
只需对相同的两个节点集使用标准XPath 2.0操作符
或者,可以使用标准运算符和I。在XPath 1.0中,对两个节点集的交集使用Kayesian方法:
$ns1[count(.|$ns2) = count($ns2)]
<container>
<item class="ac"/>
<item class="ac1"/>
<item class="ac1"/>
<item class="ac1"/>
<item class="ac"/>
<item class="ac1"/>
<item class="ac1"/>
<item class="ac2"/>
<item class="ac1"/>
<item class="ac"/>
<item class="ac1"/>
<item class="ac1"/>
<item class="ac1"/>
</container>
这将选择两个节点集的交点$ns1
和$ns2
在此中替换:
$ns1
带:
/*/*[@class='ac'][1]/following-sibling::*[@class='ac1']
/*/*[@class='ac'][2]
/following-sibling::*[not(@class='ac1')][3]
/preceding-sibling::*
/*/*[@class='ac'][4]
/following-sibling::*[@class='ac1']
[count(.
|
/*/*[@class='ac'][5]
/following-sibling::*[not(@class='ac1')][6]
/preceding-sibling::*
)
=
count(/*/*[@class='ac'][7]
/following-sibling::*[not(@class='ac1')][8]
/preceding-sibling::*
)
]
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:variable name="ns1" select=
"/*/*[@class='ac'][9]/following-sibling::*[@class='ac1']"/>
<xsl:variable name="ns2" select=
"/*/*[@class='ac'][10]
/following-sibling::*[not(@class='ac1')][11]
/preceding-sibling::*"/>
<xsl:template match="/">
<xsl:copy-of select=
"$ns1[count(.|$ns2) = count($ns2)]"/>
=========
<xsl:copy-of select=
"/*/*[@class='ac'][12]
/following-sibling::*[@class='ac1']
[count(.
|
/*/*[@class='ac'][13]
/following-sibling::*[not(@class='ac1')][14]
/preceding-sibling::*
)
=
count(/*/*[@class='ac'][15]
/following-sibling::*[not(@class='ac1')][16]
/preceding-sibling::*
)
]
"/>
</xsl:template>
</xsl:stylesheet>
<item class="ac1"/>
<item class="ac1"/>
=========
<item class="ac1"/>
<item class="ac1"/>
和$ns2
与:
/*/*[@class='ac'][1]/following-sibling::*[@class='ac1']
/*/*[@class='ac'][2]
/following-sibling::*[not(@class='ac1')][3]
/preceding-sibling::*
/*/*[@class='ac'][4]
/following-sibling::*[@class='ac1']
[count(.
|
/*/*[@class='ac'][5]
/following-sibling::*[not(@class='ac1')][6]
/preceding-sibling::*
)
=
count(/*/*[@class='ac'][7]
/following-sibling::*[not(@class='ac1')][8]
/preceding-sibling::*
)
]
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:variable name="ns1" select=
"/*/*[@class='ac'][9]/following-sibling::*[@class='ac1']"/>
<xsl:variable name="ns2" select=
"/*/*[@class='ac'][10]
/following-sibling::*[not(@class='ac1')][11]
/preceding-sibling::*"/>
<xsl:template match="/">
<xsl:copy-of select=
"$ns1[count(.|$ns2) = count($ns2)]"/>
=========
<xsl:copy-of select=
"/*/*[@class='ac'][12]
/following-sibling::*[@class='ac1']
[count(.
|
/*/*[@class='ac'][13]
/following-sibling::*[not(@class='ac1')][14]
/preceding-sibling::*
)
=
count(/*/*[@class='ac'][15]
/following-sibling::*[not(@class='ac1')][16]
/preceding-sibling::*
)
]
"/>
</xsl:template>
</xsl:stylesheet>
<item class="ac1"/>
<item class="ac1"/>
=========
<item class="ac1"/>
<item class="ac1"/>
得到的XPath表达式是:
/*/*[@class='ac'][1]/following-sibling::*[@class='ac1']
/*/*[@class='ac'][2]
/following-sibling::*[not(@class='ac1')][3]
/preceding-sibling::*
/*/*[@class='ac'][4]
/following-sibling::*[@class='ac1']
[count(.
|
/*/*[@class='ac'][5]
/following-sibling::*[not(@class='ac1')][6]
/preceding-sibling::*
)
=
count(/*/*[@class='ac'][7]
/following-sibling::*[not(@class='ac1')][8]
/preceding-sibling::*
)
]
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:variable name="ns1" select=
"/*/*[@class='ac'][9]/following-sibling::*[@class='ac1']"/>
<xsl:variable name="ns2" select=
"/*/*[@class='ac'][10]
/following-sibling::*[not(@class='ac1')][11]
/preceding-sibling::*"/>
<xsl:template match="/">
<xsl:copy-of select=
"$ns1[count(.|$ns2) = count($ns2)]"/>
=========
<xsl:copy-of select=
"/*/*[@class='ac'][12]
/following-sibling::*[@class='ac1']
[count(.
|
/*/*[@class='ac'][13]
/following-sibling::*[not(@class='ac1')][14]
/preceding-sibling::*
)
=
count(/*/*[@class='ac'][15]
/following-sibling::*[not(@class='ac1')][16]
/preceding-sibling::*
)
]
"/>
</xsl:template>
</xsl:stylesheet>
<item class="ac1"/>
<item class="ac1"/>
=========
<item class="ac1"/>
<item class="ac1"/>
基于XSLT的验证:
/*/*[@class='ac'][1]/following-sibling::*[@class='ac1']
/*/*[@class='ac'][2]
/following-sibling::*[not(@class='ac1')][3]
/preceding-sibling::*
/*/*[@class='ac'][4]
/following-sibling::*[@class='ac1']
[count(.
|
/*/*[@class='ac'][5]
/following-sibling::*[not(@class='ac1')][6]
/preceding-sibling::*
)
=
count(/*/*[@class='ac'][7]
/following-sibling::*[not(@class='ac1')][8]
/preceding-sibling::*
)
]
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:variable name="ns1" select=
"/*/*[@class='ac'][9]/following-sibling::*[@class='ac1']"/>
<xsl:variable name="ns2" select=
"/*/*[@class='ac'][10]
/following-sibling::*[not(@class='ac1')][11]
/preceding-sibling::*"/>
<xsl:template match="/">
<xsl:copy-of select=
"$ns1[count(.|$ns2) = count($ns2)]"/>
=========
<xsl:copy-of select=
"/*/*[@class='ac'][12]
/following-sibling::*[@class='ac1']
[count(.
|
/*/*[@class='ac'][13]
/following-sibling::*[not(@class='ac1')][14]
/preceding-sibling::*
)
=
count(/*/*[@class='ac'][15]
/following-sibling::*[not(@class='ac1')][16]
/preceding-sibling::*
)
]
"/>
</xsl:template>
</xsl:stylesheet>
<item class="ac1"/>
<item class="ac1"/>
=========
<item class="ac1"/>
<item class="ac1"/>
=========
在提供的XML文档上应用此转换时:
$ns1[count(.|$ns2) = count($ns2)]
<container>
<item class="ac"/>
<item class="ac1"/>
<item class="ac1"/>
<item class="ac1"/>
<item class="ac"/>
<item class="ac1"/>
<item class="ac1"/>
<item class="ac2"/>
<item class="ac1"/>
<item class="ac"/>
<item class="ac1"/>
<item class="ac1"/>
<item class="ac1"/>
</container>
对两个XPath表达式(一个带变量,另一个带替换变量)进行求值,并将它们各自选择的节点复制到输出中:
/*/*[@class='ac'][1]/following-sibling::*[@class='ac1']
/*/*[@class='ac'][2]
/following-sibling::*[not(@class='ac1')][3]
/preceding-sibling::*
/*/*[@class='ac'][4]
/following-sibling::*[@class='ac1']
[count(.
|
/*/*[@class='ac'][5]
/following-sibling::*[not(@class='ac1')][6]
/preceding-sibling::*
)
=
count(/*/*[@class='ac'][7]
/following-sibling::*[not(@class='ac1')][8]
/preceding-sibling::*
)
]
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:variable name="ns1" select=
"/*/*[@class='ac'][9]/following-sibling::*[@class='ac1']"/>
<xsl:variable name="ns2" select=
"/*/*[@class='ac'][10]
/following-sibling::*[not(@class='ac1')][11]
/preceding-sibling::*"/>
<xsl:template match="/">
<xsl:copy-of select=
"$ns1[count(.|$ns2) = count($ns2)]"/>
=========
<xsl:copy-of select=
"/*/*[@class='ac'][12]
/following-sibling::*[@class='ac1']
[count(.
|
/*/*[@class='ac'][13]
/following-sibling::*[not(@class='ac1')][14]
/preceding-sibling::*
)
=
count(/*/*[@class='ac'][15]
/following-sibling::*[not(@class='ac1')][16]
/preceding-sibling::*
)
]
"/>
</xsl:template>
</xsl:stylesheet>
<item class="ac1"/>
<item class="ac1"/>
=========
<item class="ac1"/>
<item class="ac1"/>
=========
II。XPath 2.0解决方案:
/*/*[@class='ac'][1]/following-sibling::*[@class='ac1']
/*/*[@class='ac'][2]
/following-sibling::*[not(@class='ac1')][3]
/preceding-sibling::*
/*/*[@class='ac'][4]
/following-sibling::*[@class='ac1']
[count(.
|
/*/*[@class='ac'][5]
/following-sibling::*[not(@class='ac1')][6]
/preceding-sibling::*
)
=
count(/*/*[@class='ac'][7]
/following-sibling::*[not(@class='ac1')][8]
/preceding-sibling::*
)
]
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:variable name="ns1" select=
"/*/*[@class='ac'][9]/following-sibling::*[@class='ac1']"/>
<xsl:variable name="ns2" select=
"/*/*[@class='ac'][10]
/following-sibling::*[not(@class='ac1')][11]
/preceding-sibling::*"/>
<xsl:template match="/">
<xsl:copy-of select=
"$ns1[count(.|$ns2) = count($ns2)]"/>
=========
<xsl:copy-of select=
"/*/*[@class='ac'][12]
/following-sibling::*[@class='ac1']
[count(.
|
/*/*[@class='ac'][13]
/following-sibling::*[not(@class='ac1')][14]
/preceding-sibling::*
)
=
count(/*/*[@class='ac'][15]
/following-sibling::*[not(@class='ac1')][16]
/preceding-sibling::*
)
]
"/>
</xsl:template>
</xsl:stylesheet>
<item class="ac1"/>
<item class="ac1"/>
=========
<item class="ac1"/>
<item class="ac1"/>
只需对相同的两个节点集使用标准XPath 2.0操作符
或者可以使用标准运算符和您能给我们看一下您尝试过的任何东西吗?明天将显示。现在从iPad开始,对不起。Dmitry,现在我不能测试你的代码,但我检查了一下,发现这正是我需要的。我花了很多时间来解决这个问题,不相信有人能帮上忙。你能给我们看看你试过的东西吗?明天就可以了。现在从iPad开始,对不起。Dmitry,现在我不能测试你的代码,但我检查了一下,发现这正是我需要的。我花了很多时间来解决这个问题,不相信有人能帮我。