xlsx documents fail to parse in Okapi if they have an empty StringItem in sharedStrings.xml

[Description]

Okapi fails to parse xlsx documents with an empty StringItem <si></si> in the sharedStrings.xml that is referenced from a worksheet cell. Documents with empty StringItems can be opened without any warnings in MS Excel 365. Since the document opens in MS Excel but fails to parse in Okapi, it would be desirable if a fix was made to Okapi so that these files can be parsed. I have a fix ready that I would like to nominate. I will create a PR. For this reason I have assigned the defect to myself.

[Steps to reproduce]

  1. Copy the attached emptyStringItem.xlsx to the /okapi-filter-openxml/src/test/resources folder (don't open and save it in Excel since that modifies the file)

  2. Run the test net.sf.okapi.filters.openxml.OpenXMLZipFullFileTest.testAll(). This test will fail to parse emptyStringItem.xlsx

    with the following Exception

java.lang.IndexOutOfBoundsException: Index 1 out of bounds for length 1 at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:100) at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:106) at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:302) at java.base/java.util.Objects.checkIndex(Objects.java:385) at java.base/java.util.ArrayList.get(ArrayList.java:427) at net.sf.okapi.filters.openxml.StringItemsMapping.mapPlain(StringItemsMapping.java:167) at net.sf.okapi.filters.openxml.StringItemsMapping.mapSingle(StringItemsMapping.java:75) at net.sf.okapi.filters.openxml.StringItemsMapping.textUnits(StringItemsMapping.java:63) at net.sf.okapi.filters.openxml.SharedStringsPart.formEventsFor(SharedStringsPart.java:187) at net.sf.okapi.filters.openxml.SharedStringsPart.formContextualisedEventsFor(SharedStringsPart.java:268) at net.sf.okapi.filters.openxml.SharedStringsPart.open(SharedStringsPart.java:123) at net.sf.okapi.filters.openxml.OpenXMLFilter.nextInDocument(OpenXMLFilter.java:458) at net.sf.okapi.filters.openxml.OpenXMLFilter.next(OpenXMLFilter.java:261) at net.sf.okapi.filters.openxml.OpenXMLFilter.next(OpenXMLFilter.java:270) at net.sf.okapi.filters.openxml.OpenXMLZipFullFileTest.testAll(OpenXMLZipFullFileTest.java:79) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580)...

emptyStringItem.xlsx