New GitHub issue #100710 from dylan-robins:<br>

<hr>

<pre>
# [xml.dom.minidom] nodeValue attr is not defined on Node class but directly on all derived classes

According to the documentation, the Node class is supposed to have an attribute `nodeValue` that "[has a different meaning for each node type; see the DOM specification for details.. [...] The value is a string or None."](https://docs.python.org/3/library/xml.dom.html#xml.dom.Node.nodeValue)". However, this attribute is undefined on the Node class, but is then implemented on all derived classes (DocumentFragment, Attr, Element, ProcessingInstruction, CharacterData, DocumentType, Entity, Notation, Document).

As a result, IDEs and static analysers raise false positives when analysing "correct" code.

```py
from xml.dom import minidom

dummy_xml: str = """<?xml version="1.0"?>
<Envelope>
  <Body>
    <StockName>T</StockName>
    <StockName>N</StockName>
  </Body>
</Envelope>
"""

dom: minidom.Document = minidom.parseString(dummy_xml)
body: minidom.Element = dom.getElementsByTagName("Body")[0]

child_node: minidom.Node
for child_node in body.childNodes:
  inner_node: minidom.Node | None = child_node.firstChild
  if inner_node is not None:
        print(inner_node.nodeValue)
```
The example above prints T and N as expected, but Pylance reports the following issue:
> Cannot access member "nodeValue" for type "Node"
>   Member "nodeValue" is unknown - Pylance (reportGeneralTypeIssues)

Indeed the nodes we process happen to be Elements - therefore the attribute is defined at runtime. However during static analysis this is unknown despite this being legal according to the documentation.

# Proposed solution

As far as i can tell this would be very easy to fix: just by initializing this attribute to `None` in the Node class (as is done for other similar attributes), this problem could be fully resolved:
https://github.com/python/cpython/blob/b99ac1dbc081e4f2d2e68906e9c7c535e628611a/Lib/xml/dom/minidom.py#L34-L40

While we're at it it'd be worth double checking if other attributes are affected by the same issue. I can submit a PR in a few hours if you'd like.

# My environment

- CPython versions tested on: 3.8.2, 3.10.8, 3.11.0
- Operating system and architecture: RHEL7.9 x86_64, Windows 10 x86_64

</pre>

<hr>

<a href="https://github.com/python/cpython/issues/100710">View on GitHub</a>
<p>Labels: type-bug</p>
<p>Assignee: </p>